SQL Server 2005 varchar with data ddmmyyyy to datetime forma



我的应用程序数据库表 JOB 中有一个列完成日期,其数据类型为 varchar(16)(很奇怪),但此列以任性的格式存储日期值,例如yyyyddmm(例如 - 19841511)、yyyymmdd(例如 - 19841215)、ddmmyyyy(例如 - 01012007)。

我只想将数据转换为一种统一的日期时间格式,这是SQL Server 2005的默认日期时间格式,即

yyyy-mm-dd 00:00:00.000

你们能帮我解决这个问题吗?

提前感谢!

好吧,我希望您有一种系统的方法来确定哪一行以哪种方式存储,因为DATETIME没有默认格式,并且您的字符串以错误的格式存储...因为这种格式在 SQL 中不存在。没有外界的帮助,SQL就无法知道。

  • 没有格式YYYY-DD-MM日期。看起来像自定义工作。:/
  • VARCHAR(16) 也意味着您的DATETIME格式没有任何秒数...耶!:(

除非您事先知道哪些日期被格式化了什么,否则如果不回到发布这些"日期"的来源,几乎不可能解决这个问题。

SELECT CASE WHEN ISDATE('19841511') = 0
        THEN  SUBSTRING('19841511', 1, 4) + '-'  --YEAR
            + SUBSTRING('19841511', 7, 2) + '-'  -- MONTH
            + SUBSTRING('19841511', 5, 2) END AS [YYYY-MM-DD]
     , CASE WHEN ISDATE('01012007') = 0
        THEN SUBSTRING('01012007', 5, 4) + '-' --YEAR
            + SUBSTRING('01012007', 3, 2) + '-' --MONTH
            + SUBSTRING('01012007', 1, 2) END AS [YYYY-MM-DD]

请注意两种格式的区别...并且这两种格式都不以 SQL Server 识别的日期格式存储。

  • DATETIME2确实使用您要查找的默认格式 YYYY-MM-DD hh:mm:ss[.小数秒]

希望这至少能让你找到正确的答案!

相关内容

  • 没有找到相关文章

最新更新