将时间值从varchar转换为datetime

时间:2014-03-23 21:36:13

标签: sql datetime sql-server-2012

我有一个varchar列[Start_time(hh:mm)],其格式为以下格式:

11:18:00 a.m.

除了少数NULLS之外,这在整个专栏中都是一致的。

我使用datetime数据类型创建了一个新列[StartTime]以接收转换后的值。

我试过CAST:

UPDATE mytable
SET StartTime = CAST([Start_time (hh:mm)] AS DATETIME)

我也试过转换:

UPDATE dbo.mytable
SET StartTime = CONVERT(DATETIME, [Start_time (hh:mm)], 120)

我使用120,因为它匹配我们在数据库中使用的日期时间格式,我猜日期部分只是默认值。我也试过108,因为它只是时间的流逝,但这也不起作用。

任何帮助将不胜感激,

由于

1 个答案:

答案 0 :(得分:0)

嗯,错误是由'a.m。'中的点引起的。

所以我摆脱了那些:

UPDATE mytable
SET [Start_time (hh:mm)] = REPLACE([Start_time (hh:mm)], '.', '')

然后这很好用:

UPDATE mytable
SET StartTime = CAST([Start_time (hh:mm)] AS DATETIME)

输出示例:

1900-01-01 11:18:00.000

我们会在重要时忽略“默认”日期,因为我们将实际日期值存储在另一列中。

感谢你们的建议。