Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串到日期时SQL转换_Sql_Sql Server_Datetime Format - Fatal编程技术网

字符串到日期时SQL转换

字符串到日期时SQL转换,sql,sql-server,datetime-format,Sql,Sql Server,Datetime Format,我知道这已经被问了好几次了,但我还没有看到有人问我的特殊情况 如果文本采用这种格式:Dec 30 2006 12:38 AM有什么方法 将其转换为实际日期时间。我对创建一个使用子字符串等将其解析为日期的函数并不感兴趣 以前的一位开发人员开发了整个应用程序,并决定将数据库中的所有日期值存储为VARCHAR,这样可以方便地将它们从以下内容更改为:2016-12-30 00:38:00 至2006年12月30日凌晨12:38。这使得它们不可兼容(SMH)只需使用cast(): 是一个SQL小提琴。请试

我知道这已经被问了好几次了,但我还没有看到有人问我的特殊情况

如果文本采用这种格式:Dec 30 2006 12:38 AM有什么方法 将其转换为实际日期时间。我对创建一个使用子字符串等将其解析为日期的函数并不感兴趣

以前的一位开发人员开发了整个应用程序,并决定将数据库中的所有日期值存储为VARCHAR,这样可以方便地将它们从以下内容更改为:
2016-12-30 00:38:00
至2006年12月30日凌晨12:38。这使得它们不可兼容(SMH)

只需使用
cast()

是一个SQL小提琴。请试试这个

声明@var varchar(30)='Dec 30 2006 12:38 AM'
选择convert(datetime,@var)

因为您正在转换字符串(这总是有风险的),我建议您在2012+时尝试使用convert()。如果转换失败,Try_Convert()将返回null,而不是抛出错误

示例

Select ValidDate = try_convert(datetime,'Dec 30 2006 12:38AM')
      ,BogusDate = try_convert(datetime,'Not a Valid Date String')
返回

ValidDate                BogusDate
2006-12-30 00:38:00.000  NULL

完美的不知道为什么第一天我就没用了time@logixologist可能是因为语言不安全。尝试
set语言法语第一个。@AaronBertrand。当转换为日期时,
cast()。他们了解各种各样的格式,这些格式在其他方面不容易分析。你能帮我回答类似的问题吗?
ValidDate                BogusDate
2006-12-30 00:38:00.000  NULL