Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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 将mm/dd/yyyy字符串转换为日期时间时出错_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 将mm/dd/yyyy字符串转换为日期时间时出错

Sql 将mm/dd/yyyy字符串转换为日期时间时出错,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试图更新一个表,但只得到一个varchar值: UPDATE table SET Deadline = CONVERT(DATETIME, '06/18/2012 12:00 AM') FROM table WHERE nominal_id = 2650 我得到的错误是: 转换时,Msg 241,16级,状态1,第10行转换失败 来自字符串的日期和/或时间 但是当我执行一个简单的选择CONVERT(DATETIME,'12:00pm')时,它会返回正确的值。我在这里似乎遗漏了什么?我是否应该

我试图更新一个表,但只得到一个varchar值:

UPDATE table
SET Deadline = CONVERT(DATETIME, '06/18/2012 12:00 AM')
FROM table
WHERE nominal_id = 2650
我得到的错误是:

转换时,Msg 241,16级,状态1,第10行
转换失败 来自字符串的日期和/或时间


但是当我执行一个简单的
选择CONVERT(DATETIME,'12:00pm')
时,它会返回正确的值。我在这里似乎遗漏了什么?我是否应该强制转换varchar?

对于日期/时间文本,应该始终使用明确的、区域无关的字符串。在您的情况下,这会更好(并且您不需要显式转换为datetime):

我强烈建议您更改输入格式。如果无法更改输入格式,则可能:

CONVERT(DATETIME, CONVERT(VARCHAR(19), '06/18/2012 12:00 AM', 101))

如果您使用
'18/06/2012'
而不是
'06/18/2012'
,我敢打赌它会起作用-在这种情况下,这是因为您正在接受
m/d/yyyyy
格式的日期,即使您的服务器设置为英国或类似的地区设置,或者您的会话已将dateformat设置为
dmy
,或者语言设置为英国或类似,或者两者都有。我老了。。。我也写了很多关于日期查询的文章,例如,我尝试了这个,但仍然得到相同的错误消息:从字符串转换日期和/或时间时转换失败。好的,那么截止日期的数据类型是什么?数据库的排序规则是什么,服务器的区域设置,以及正在执行代码并获取错误的会话的设置(
SELECT language,date\u format FROM sys.dm\u exec\u sessions,其中session\u id=@@SPID;
)?
CONVERT(DATETIME, CONVERT(VARCHAR(19), '06/18/2012 12:00 AM', 101))