2014-04-10 281 views
1

为某些AS400数据创建sql备份/ Web查看器时,必须手动清理某些数据。如何将日期值格式更改为YYYYMMDD格式

在这个过程中,在数据库中的日期最终被作为字符串存储在2个甲:

  • YYYYMMDD
  • MM/DD/YYYY

在努力保留原始数据,我想要将所有MM/DD/YYYY转换为YYYYMMDD。有没有可以解决这个问题的查询?例如:

SELECT commentDate from SomeTable 
    IF FORMAT(commentDate) LIKE '00/00/0000' 
     commentDate = FORMAT(commentDate, '00000000') 
+2

DB什么你打算运行本擦洗SQL? – attila

+0

@attila数据已经被我们正在做备份的公司的员工清理过,这就是日期以两种格式结束的方式。 – drewwyatt

+0

你在MySQL吗? PostgreSQL的? MSSQL? –

回答

1

首先,我强烈建议您追查谁决定将日期存储为文本并给予他很好的殴打。如果有帮助,欢迎您借我的时间旅行机器人。

你快到了。使用MS SQL语法:

SELECT 
    CASE WHEN CommentDate LIKE '[12][0-9][0-9][0-9][0-1][0-9][0-3][0-9]' THEN CONVERT(DATE, CommentDate, 112) 
     WHEN CommentDate LIKE '[0-1][0-9]/[0-3][0-9]/[12][0-9][0-9][0-9]' THEN CONVERT(DATE, CommentDate, 101) 
     END 
FROM 
    (SELECT '20140410' AS CommentDate UNION ALL SELECT '04/10/2014') AS X 
0
Select convert(varchar(11),cast(CommentDate as datetime),112) 
From tableName 

SQL Fiddle Demo

这说明如果CommentDate是有效的datetime值以YYYYMMDD格式的日期。

检查此链接为MSSQL date format styling

+1

如果用户的语言环境设置为默认为dd/mm/yyyy,演员是否会工作? – attila