2016-12-15 107 views
-1

我有這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 

或至少是Date Month Year部分?

有些值是這樣的:

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。

+0

列的數據類型是什麼? – DVT

+4

如果你的列是一個varchar,它們不是日期。您不應該將日期存儲在varchar列中。這就是爲什麼我們有日期(時間)數據類型。格式屬於消費應用程序,而不屬於數據庫。我的建議是要弄清楚如何將數據類型更新爲適當的數據類型,然後這個問題就消失了。 –

+0

未來的價值觀將如何變化並不是問題......問題僅在於11月份和12月份的部分時間。所以varchar類型目前對我來說很好。我發佈這個問題只是爲了確保沒有辦法編寫適當的更新。 – Ivan69

回答

2

要更新現有值,您需要將它們存儲爲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。

+0

我會盡力 – Ivan69

+0

我已更新我的答案,爲您提供更新聲明。我還建議將列類型更改爲DateTime – RSSM

+0

更新stockattributesvalues設置值= CAST('2014-03-17T10:38:13.300'作爲日期時間) 我不是正確的 – Ivan69