2

我正在尝试更新一个表,我只得到一个 varchar 值:

UPDATE table
SET Deadline = CONVERT(DATETIME, '06/18/2012 12:00 AM')
FROM table
WHERE nominal_id = 2650

我得到的错误是:

消息 241,级别 16,状态 1,第 10 行
从字符串转换日期和/或时间时转换失败。

但是当我做一个简单的SELECT CONVERT(DATETIME, '12:00 PM'),它返回正确的值。我在这里似乎缺少什么?我应该铸造 varchar 吗?

4

1 回答 1

6

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

'20120618 12:00 AM'

我强烈建议您更改输入格式。如果您无法更改输入格式,那么也许:

CONVERT(DATETIME, CONVERT(VARCHAR(19), '06/18/2012 12:00 AM', 101))
于 2012-06-18T17:22:01.313 回答