更新日期时间值格式

时间:2016-12-15 15:45:15

标签: sql-server datetime format

我有这些5000行的MsSQL表和一些列,其中一些值当前采用以下格式:

Nov 14 2016 2:42PM
Dec 15 2016 5:45PM

有没有办法将这些更新为:

2016-11-14 14:42:18.222
2016-12-15 17:45:38.333

或者至少是日期月份部分?

有些值是这样的:

2014-03-17T10:38:13.300
2014-10-20T13:26:00.267

如果有办法更新这些,我将不胜感激。

有些值就像这样:

2016-12-15 14:03:01.444

表格如下所示

id      stockid attributeid value

1025183 64348   50          Nov 28 2016  1:02PM
1027332 15984   50          2014-10-20T13:26:00.267
1041149 69924   50          Nov 28 2016  1:17PM
1049041 71661   50          2016-12-15 16:54:03.130

列的数据类型属性设置为varchar。

1 个答案:

答案 0 :(得分:3)

要更新现有值,您需要将它们存储为DateTime列。

将varchar值转换为DateTimes非常简单。

select CAST('Nov 14 2016 2:42PM' as DATETIME), 
       CAST('2014-03-17T10:38:13.300' as DATETIME)

返回

  2016-11-14 14:42:00.000   and    2014-03-17 10:38:13.300

如果要更新表中的所有行,可以使用此语法。

UPDATE [TableName]
SET [ColumnName] = CAST([ColumnName] as DATETIME)

然后,您可以更改表并将列类型从Varchar更改为DateTime。虽然您可能需要修改访问此表列的任何代码并期望varchar。