我有一個兩列的表,它們都是日期時間值 如列A的值爲'07/09/2012 14:13:34' 現在,我想聲明,列A升級到年月日更新表錯誤使用轉換函數在SQL Server 2005中
Update Change_Date
SET A = CONVERT(VARCHAR(8),A,112)
它顯示在我的表CHANGE_DATE succsessful消息,但沒有效果(沒有更新值20120907)。
任何幫助將grealed,謝謝!
我有一個兩列的表,它們都是日期時間值 如列A的值爲'07/09/2012 14:13:34' 現在,我想聲明,列A升級到年月日更新表錯誤使用轉換函數在SQL Server 2005中
Update Change_Date
SET A = CONVERT(VARCHAR(8),A,112)
它顯示在我的表CHANGE_DATE succsessful消息,但沒有效果(沒有更新值20120907)。
任何幫助將grealed,謝謝!
這是因爲該列的數據類型爲DATE
或DATETIME
並且它具有特定的格式。如果要以特定格式更新列,請創建另一列並將其數據類型設置爲VARCHAR
。我相信112
是yyyymmdd
的格式。
我強烈建議您保持現狀。數據庫是數據的存儲,而不是用於查看的目的。如果數據類型爲DATETIME
或DATE
,則可以輕鬆執行日期任務。例如,如果您想要檢索具有特定格式的日期,那就是您轉換日期的時間。
希望這是有道理的。
一個日期時間字段保存日期時間。你如何看到那個日期時間是你用來檢查數據的工具的結果,不管它是Management Studio還是你自己的軟件從數據庫打印出來的東西。
我強烈建議將它保留爲日期時間字段。這將允許您執行與日期相關的操作,例如減法和比較。如果您想更改用戶看到日期的方式,請在表示層設置日期格式。
您發佈的代碼中發生的事情是您將A
的值設置爲與原來相同的日期。事實上,你通過另一種格式的字符串來設置這個值是沒有關係的,SQL服務器總是必須把你的字符串輸入解析成它能理解的日期。這就是爲什麼你沒有收到錯誤信息。該操作正在進行,只是它沒有改變任何東西。
可以在指定的格式選擇日期欄或作出選擇以YYYYMMDD格式的列值的視圖:
SELECT CONVERT(VARCHAR(8), A, 112) FROM Change_Date
我不知道,但也許你的意思是這樣的:「這是因爲數據類型列是'DATE'或'DATETIME',它有**沒有**特定格式「? –
@AndriyM我沒有說'不'。 –
不,你沒有。我問你是否打算這麼說。因爲日期或日期時間列*不具有特定的格式。 –