2016-11-23 20 views
0

我目前擁有的日期格式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但它目前只是保持相同的格式。

我錯過了什麼嗎?

+3

預期的輸出格式是什麼? –

+0

是login_date日期時間還是varchar? – dsolimano

+3

看來你的'login_date'列已經是'datetime'了,所以不需要重新格式化它,因爲它沒有內部格式。您只需要格式化,而不是在存儲時輸出。 – wdosanjos

回答

4

您目前的要求主要是介紹需要。由於您的login_date已被存儲爲datetime,因此不需要在數據庫內部更改任何內容。

當你需要目前login_date沒有毫秒,那麼就去叫CONVERT爲你:

SELECT CONVERT(varchar(19), login_date, 120) AS login_date_no_millis 
FROM yourTable 

但也沒有必要做UPDATE您向我們展示你的問題。

+1

你不需要varchar而不是日期時間的轉換? – scsimon

+3

你應該爲'varchar'指定一個長度 - [不僅因爲總是這樣做總是一個好主意](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad -habits-to-kick-declaring-varchar-without-length.aspx),但也因爲在這種情況下,您可以使用長度來省略毫秒,這是OP要求的。這裏沒有真正的影響,但你也可以使用'char',因爲輸出總是相同的長度。 –

+0

還值得一提的是[Sql server不存儲日期顯示格式。](http://stackoverflow.com/questions/30032915/how-to-cast-the-datetime-to-time/30033028#30033028) –

0

將列更改爲數據類型datetime2(0)將意味着不存儲毫秒。如果你確定你不需要它們。

同樣,在選擇時將其轉換爲datetime2(0)將在演示級別中執行相同操作,同時在數據庫中保持毫秒(如果需要)。還意味着不像cast/convert to varchar,如果這對應用程序有所不同,它仍然是日期時間值而不是字符串。

相關問題