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



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

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

我得到的错误是:

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

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

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

'20120618 12:00 AM'

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

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

最新更新