【发布时间】:2017-06-26 16:31:34
【问题描述】:
我有几列包含日期或日期时间数据的 varchar(max) 类型。我想将它们转换为日期类型,我知道我应该使用 CONVERT 函数。到这里都没问题!
我手头的问题是每列中存储的日期不是来自相似的日期格式类型;不跨列,甚至不在一列内。换句话说,日期格式在列内不一致。一列中的某些日期可能如下所示:
DDMMMYYYY
DD/MM/YYYY
MM/DD/YYYY
....
使用 convert(不指定日期样式)最终会产生疯狂的输出。
我需要一个将这些 varchar 转换为日期的脚本,保留原始格式。
我知道 SET DATEFORMAT 函数;是否有 GET DATEFORMAT 的反向功能?有没有办法检测日期格式样式?
【问题讨论】:
-
在输入日期可能是 DD/MM/YYYY 或 MM/DD/YYYY 的情况下,如何判断 01/02/2017 是 2017 年 1 月 2 日还是 2017 年 2 月 1 日?
-
不存在日期格式不明确的解决方案。
-
停止将日期存储在 varchar 中,您将不会遇到此问题。否则,您将继续头疼,并且会像您在这里遇到的那样不断遇到无法解决的情况。
-
我理解模棱两可的情况,并且我有一个解决方法(与连续的其他日期字段进行比较)。我无法控制数据创建过程,这就是它的本质。
标签: sql sql-server date datetime-format sql-convert