【问题标题】:convert string to yyyy-mm-dd将字符串转换为 yyyy-mm-dd
【发布时间】:2013-06-30 02:16:31
【问题描述】:

我在 Excel 中有一个日期格式,例如“20.03.2013”​​,我将其转换为“2013-03-20”,因为这就是我的 sql-server 表中日期的样子。我创建了一个临时表,在其中为该字段提供了 varchar(15) 数据类型。现在我必须将该 varchar 字段转换为日期字段,但是当我检查转换选项列表时,我找不到 yyy-mmm-dd。 HERE 需要帮助才能获取我的 yyyy-mm-dd 字符串。

【问题讨论】:

    标签: sql sql-server tsql sqldatatypes


    【解决方案1】:

    你可以使用:

    CAST('2013-03-20' AS DATE) 将其转换为 DATE 字段。

    有许多格式可以 CAST() 作为 DATE 没有问题,包括:

    20130320
    2013-03-20
    2013 mar 20
    March 20, 2013
    2013.03.20
    

    我确定某处有一个全面的列表,但无法通过快速搜索找到一个。我相信语言设置会影响其中的一些。

    【讨论】:

    • 太棒了,这对我来说很好,我学到了一些非常有用的东西。谢谢你们!
    【解决方案2】:

    check here

    CAST 的语法:

    CAST ( expression AS data_type [ (length ) ])
    

    CONVERT 的语法:

    CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
    

    【讨论】:

      【解决方案3】:

      我相信这种格式会在任何地区自动投射,所以:

      select cast('2013-03-20' as datetime)
      

      【讨论】:

        【解决方案4】:

        我建议使用明确的convert 而不是cast

        select convert(date, '2013-03-20', 120)
        

        【讨论】:

        • 为什么要使用转换而不是强制转换?
        • 首先——你不必考虑SQL会自动读取什么格式,在代码中更容易阅读
        【解决方案5】:

        相信你也可以试试这个 convert(nvarchar(200), GETDATE(), 112) 为20200611格式

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-05-19
          • 2019-01-26
          • 1970-01-01
          • 2014-04-24
          • 2017-08-03
          • 2017-05-30
          • 1970-01-01
          • 2016-06-21
          相关资源
          最近更新 更多