更新日期时间值格式

Iva*_*n69 1 sql-server format datetime

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

Nov 14 2016 2:42PM
Dec 15 2016 5:45PM
Run Code Online (Sandbox Code Playgroud)

有没有办法将它们更新为:

2016-11-14 14:42:18.222
2016-12-15 17:45:38.333
Run Code Online (Sandbox Code Playgroud)

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

有些值是这样的:

2014-03-17T10:38:13.300
2014-10-20T13:26:00.267
Run Code Online (Sandbox Code Playgroud)

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

有些值是这样的:

2016-12-15 14:03:01.444
Run Code Online (Sandbox Code Playgroud)

桌子看起来像这样

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
Run Code Online (Sandbox Code Playgroud)

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

RSS*_*SSM 5

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

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

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

返回

  2016-11-14 14:42:00.000   and    2014-03-17 10:38:13.300
Run Code Online (Sandbox Code Playgroud)

如果您想更新表中的所有行,您将使用此语法。

UPDATE [TableName]
SET [ColumnName] = CAST([ColumnName] as DATETIME)
Run Code Online (Sandbox Code Playgroud)

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