UPDATE test SET add_time = '2017-04-29' WHERE id = 1;
'add_time'的類型是timestmap,上面的語句將被插入'2017-04-29 15:00:00',我的問題是爲什麼它不是'2017-04 -29 00:00:00'。它可能與mysql的時區有關?mysql的類型時間地圖
UPDATE test SET add_time = '2017-04-29' WHERE id = 1;
'add_time'的類型是timestmap,上面的語句將被插入'2017-04-29 15:00:00',我的問題是爲什麼它不是'2017-04 -29 00:00:00'。它可能與mysql的時區有關?mysql的類型時間地圖
在MySQL 5
及以上版本中,TIMESTAMP
值將從當前時區轉換爲UTC存儲,並從UTC轉換回當前時區以供檢索。 (這僅出現在TIMESTAMP數據類型中,而不適用於其他類型,如DATETIME。)
默認情況下,每個連接的當前時區是服務器的時間。時區可以基於每個連接進行設置,如MySQL Server Time Zone Support中所述。
2017-04-29 15:00:00
表示2017年4月29日下午3點。Timestamp
也保存日期和時間。那段時間是因爲時區。
不過,如果你只需要選擇日期部分,你可以做到以下幾點:
SELECT date(ColumnName) from tablename
以上將只得到唯一的日期部分。當你需要同時包含日期 和時間信息值
DateTime類型使用。 MySQL檢索並顯示 'YYYY-MM-DD HH:MM:SS'格式的DATETIME值。支持的範圍是'1000-01-01 00:00:00'至'9999-12-31 23:59:59'。
...
時間戳數據類型具有 的範圍 '1970-01-01 00:00:01' UTC的 '2038年1月9日3時14分07秒' UTC。它不同的性質,取決於 MySQL版本和服務器運行的SQL模式。
對於你的情況,我會建議你使用datetime
代替timestamp
是的,這是因爲時區。 – Barmar
如何設置以獲得'2017-04-29 00:00:00' – Frank