Sql-Server
將日期轉換為 yyyymmdd 格式
推薦使用哪個 SQL 命令將日期轉換為
yyyymmdd
格式?
convert(varchar(8), getdate(), 112);
要麼convert(varchar, getdate(), 112)
我注意到如果我使用第二個,它將在日期後附加兩個空格。(例如 [
20130705
] - 注意 value 後面的兩個空格20130705
)是否推薦使用第一條 SQL 語句?
預設情況下,如MSDN 中所述,如果沒有為 varchar 指定長度,則在使用 CAST 或 CONVERT 時預設為 30,在聲明為變數時預設為 1。
為了展示,試試這個:
DECLARE @WithLength varchar(3),@WithoutLength varchar; SET @WithLength = '123'; SET @WithoutLength = '123'; SELECT @WithLength,@WithoutLength
這是非常危險的,因為 SQL Server 會悄悄地截斷值,甚至沒有警告,並且可能導致意外錯誤。
但是,談到有問題的主題,在給定的場景中,無論有沒有長度,這兩個語句之間沒有任何區別,我看不到你正在談論的 2 個尾隨空格。嘗試這個:
SELECT CONVERT(varchar(8), GETDATE(), 112) UNION ALL SELECT DATALENGTH(CONVERT(varchar(8), GETDATE(), 112)) UNION ALL SELECT CONVERT(varchar, GETDATE(), 112) UNION ALL SELECT DATALENGTH(CONVERT(varchar, GETDATE(), 112))
您會注意到該
DATALENGTH()
函式在這兩種情況下都返回 8。拉吉