【问题标题】:Date format conversion in SQL ServerSQL Server 中的日期格式转换
【发布时间】:2020-10-20 09:34:04
【问题描述】:

我有 2 个要根据日期加入的表,但它们中的日期格式不同。 在一个表格中,日期为 2020 年 10 月 10 日,而在另一个表格中,日期为 20 年 10 月 10 日。我的首选格式是 2020 年 10 月 10 日或 2020 年 10 月 10 日。 这如何使用 SQL Server 来实现?

【问题讨论】:

  • 最好的解决方案是将日期保存在 date 数据类型中。如果这不可能,请在连接条件中进行转换。
  • 如果您将日期存储为日期而不是字符串,则不会出现此问题。由于您似乎使用过字符串,因此只需使用 convert 或 cast 以确保它们相同。有数百个关于转换日期格式的问题和答案。

标签: sql sql-server datetime


【解决方案1】:

如果可能,请将具有“oct”版本的列更改为与第一个列或日期列相同的类型。这将使连接更容易,因为它不需要转换每一行。

如果这不可能,您需要将(我假设)12 个不同字符串描述为等效数字 1-12 的硬编码翻译。这将允许您用数字替换“oct”部分。然后你应该能够使用 cast(as date) 使其成为正确的 Date 列。

【讨论】:

    【解决方案2】:

    您可以简单地使用try_cast()函数,如下所示:

    select try_cast('10-Oct-20' as date)
    

    输出将如下所示:

    DtDate
    -----------
    2020-10-10
    

    要以不同的格式显示日期,您可以使用link 中建议的方法之一。

    为简单起见,请参阅以下查询:

    select convert(varchar(10), try_cast('10-Nov-20' as date), 10)  
    select convert(varchar(10), try_cast('10-Nov-20' as date), 5)
    

    【讨论】:

      猜你喜欢
      • 2019-01-23
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      相关资源
      最近更新 更多