fiq*_*bal 2 sql t-sql sql-server
我想更新一个表,我只给了一个varchar值:
UPDATE table
SET Deadline = CONVERT(DATETIME, '06/18/2012 12:00 AM')
FROM table
WHERE nominal_id = 2650
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
消息241,级别16,状态1,行10
转换在从字符串转换日期和/或时间时失败.
但是当我做一个简单的事情时SELECT CONVERT(DATETIME, '12:00 PM'),它会返回正确的值.我在这里似乎缺少什么?我应该为varchar铸造吗?
您应始终对日期/时间文字使用明确的,区域无关的字符串.在您的情况下,这应该更好(并且您不需要显式转换为datetime):
'20120618 12:00 AM'
Run Code Online (Sandbox Code Playgroud)
我强烈建议您更改输入格式.如果您无法更改输入格式,那么可能:
CONVERT(DATETIME, CONVERT(VARCHAR(19), '06/18/2012 12:00 AM', 101))
Run Code Online (Sandbox Code Playgroud)