我目前擁有的日期格式2016-11-23 16:47:21.007
,我試圖把它與這個SQL轉換:轉換日期格式SQL以YYYY-MM-DD HH:MM:SS
update user_table set login_date = CONVERT(datetime,login_date,120)
所以,我只得到2016-11-23 16:47:21
但它目前只是保持相同的格式。
我錯過了什麼嗎?
我目前擁有的日期格式2016-11-23 16:47:21.007
,我試圖把它與這個SQL轉換:轉換日期格式SQL以YYYY-MM-DD HH:MM:SS
update user_table set login_date = CONVERT(datetime,login_date,120)
所以,我只得到2016-11-23 16:47:21
但它目前只是保持相同的格式。
我錯過了什麼嗎?
您目前的要求主要是介紹需要。由於您的login_date
已被存儲爲datetime
,因此不需要在數據庫內部更改任何內容。
當你需要目前的login_date
沒有毫秒,那麼就去叫CONVERT
爲你:
SELECT CONVERT(varchar(19), login_date, 120) AS login_date_no_millis
FROM yourTable
但也沒有必要做UPDATE
您向我們展示你的問題。
你不需要varchar而不是日期時間的轉換? – scsimon
你應該爲'varchar'指定一個長度 - [不僅因爲總是這樣做總是一個好主意](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad -habits-to-kick-declaring-varchar-without-length.aspx),但也因爲在這種情況下,您可以使用長度來省略毫秒,這是OP要求的。這裏沒有真正的影響,但你也可以使用'char',因爲輸出總是相同的長度。 –
還值得一提的是[Sql server不存儲日期顯示格式。](http://stackoverflow.com/questions/30032915/how-to-cast-the-datetime-to-time/30033028#30033028) –
將列更改爲數據類型datetime2(0)將意味着不存儲毫秒。如果你確定你不需要它們。
同樣,在選擇時將其轉換爲datetime2(0)將在演示級別中執行相同操作,同時在數據庫中保持毫秒(如果需要)。還意味着不像cast/convert to varchar,如果這對應用程序有所不同,它仍然是日期時間值而不是字符串。
預期的輸出格式是什麼? –
是login_date日期時間還是varchar? – dsolimano
看來你的'login_date'列已經是'datetime'了,所以不需要重新格式化它,因爲它沒有內部格式。您只需要格式化,而不是在存儲時輸出。 – wdosanjos