date 是精確到日,datetime精確到秒。timestamp 時間戳
date: 日期 如:2019-10-26 不帶時分秒
datetime: 日期時間 如:2019-10-26 10:53:00 帶時分秒
timestamp: 時間戳,見百度百科: 時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。
1.介紹
數據庫時間日期常見存儲類型,取出三者后,到后端或者前端均是字符串類型【其實在數據表中存儲也是字符類型,不過是有固定格式約束的字符罷了】, 也均可以使用int類型存儲,使用代碼二次轉換【TBD】
2.應用場景
存儲數據到數據表時,選定字段類型, 如何選取合適的時間類型是必要的,已經時間類型確定,需要轉換為合適的字段類型也是在所難免。
如:
設計數據表時, 設計日期時間類型。
在已數據表,轉換日期時間類型。
3.學習
在數據庫中一直有這三個時間類型有點搞不太清楚,總結如下:
【定義】
date: 日期 如:2019-10-26 不帶時分秒
datetime: 日期時間 如:2019-10-26 10:53:00 帶時分秒
timestamp: 時間戳,見百度百科: 時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。
【時間范圍】
date -- > '1000-01-01' to '9999-12-31'.
datetime --> '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.
timestamp -- > '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
備注:UTC, Coordinated Universal Time,協調世界時,又稱世界統一時間、世界標准時間、國際協調時間。由於英文(CUT)和法文(TUC)的縮寫不同,作為妥協,簡稱UTC。
常用日期函數以及轉換
1、獲取當前日期:
CURRENT_DATE()或者CURDATE()
2、獲取當前時間:
CURRENT_TIME()或者CURTIME()
3、獲取當前日期和時間
NOW()或者CURRENT_TIMESTAMP()
4、linux/unix時間戳和mysql時間日期類型之間的轉換:
UNIX_TIMESTAMP(NOW()) //將mysql的datetime轉換成linux/unix的時間戳;日期時間
UNIX_TIMESTAMP(DATE(NOW())) //將mysql的date轉換成linux/unix的日期。
UNIX_TIMESTAMP(TIME(NOW())) //將mysql的time轉換成linux/unix的時間。(用問題)
FROM_UNIXTIME(time_t) //將unix的時間戳轉換成mysql的datetime;日期時間
DATE(FROM_UNIXTIME(time_t)) //日期
TIME(FROM_UNIXTIME(time_t)) //時間
4.問題
1.數據庫時間日期常見存儲類型,取出三者后,到后端或者前端均是字符串類型【其實在數據表中存儲也是字符類型,不過是有固定格式約束的字符罷了】, 也均可以使用int類型存儲,使用代碼二次轉換?
TBD
2.數據表中字段類型MySQL是如何區分?他們的本質是什么?
TBD
參考 Mysql date,datetime的區別以及相互轉換
參考:MySQL date,datetime,timestamp區別及相互轉換