【问题标题】:Convert varchar column to smalldatetime将 varchar 列转换为 smalldatetime
【发布时间】:2010-10-01 14:35:55
【问题描述】:

我有一个包含 800 多条记录的表。在此表中,我有一个名为 varchar(10) 数据类型的“数据”列,其中包含 dd.MM.yyyy 格式的日期。我想将其转换为 smalldatetime。

我尝试使用 Enterprise Management Studio Express 对其进行转换,但收到此错误:

The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.

如何转换?

【问题讨论】:

    标签: sql-server sql-server-2005 varchar smalldatetime


    【解决方案1】:

    我认为您需要进行一些字符串操作才能使其正常工作,因为我认为 SQL 期望“MM.dd.yyyy”。因此,请先更新您的表格以翻转月份和日期,然后才能完成转换。

    update YourTable
        set Data = SUBSTRING(Data,4,3) + LEFT(Data,3) + RIGHT(Data,4)
    

    【讨论】:

    • 很好,可以
    【解决方案2】:

    您可以使用:
    SELECT ID, CAST(VarcharCol As SmallDateTime) as DateTimeCol From Test1
    这将返回一个 varcharcol 值作为 smalldatetime 的表 然后用新值更新 varcharcol 的内容。

    【讨论】:

      【解决方案3】:

      如果你不想隐式转换为smalldatetime,你应该使用CONVERT and the argument style
      dd.MM.yyyy格式对应样式 104.
      例如:

      SELECT CONVERT(smalldatetime, '31.12.2018', 104) AS "Result"
      
      Result
      ------
      2018-12-31 00:00:00
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-20
        • 2018-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-02
        • 2013-04-07
        • 2011-12-11
        相关资源
        最近更新 更多