【问题标题】:unable to convert varchar to date in sql server无法在 sql server 中将 varchar 转换为日期
【发布时间】:2011-10-12 12:54:25
【问题描述】:

在我的数据中,名为 'duedate' 的列采用 varchar(5) 格式,其日期以 2011 年 7 月 25 日的以下格式 '20110725' 存储,有没有办法可以将其转换为日期格式

我尝试使用

cast(duedate as datetime) 

这不起作用 然后我尝试将其转换为 bigint,然后转换为 datetime

cast( cast(duedate as bigint) as datetime) 

说的

算术溢出错误


抱歉,它是 varchar(50) - 拼写错误,非常感谢您的帮助,请尝试你们提到的内容

【问题讨论】:

    标签: sql-server tsql sql-server-2008 date


    【解决方案1】:

    如果该列确实是 varchar(5),那么它不能有像 '20110725' 这样的值,因为那将是 8 个字符。

    也许这些值在插入时被截断?
    '20110725' 缩短为 5 个字符变成了 '20117',并且转换不起作用。

    我猜问题是这样的,因为Mladen Prajdic already said 将“20110725”转换为日期时间非常有效。

    【讨论】:

      【解决方案2】:

      请参阅this table 的有效日期时间转换代码。您需要的代码是112,它是从yyyymmdd 格式转换而来的。

      CONVERT (datetime, duedate, 112)
      

      【讨论】:

        【解决方案3】:

        它怎么没用?做 SELECT cast('20110725' as datetime) 非常适合我。

        【讨论】:

          【解决方案4】:

          尝试在您的表上运行此命令以查找不是日期的值:

          SELECT duedate
          FROM your_table
          WHERE ISDATE(duedate) = 0;
          

          正如 Christian 所说,VarChar(5) 也无法保持您期望的价值。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-28
            • 2010-12-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多