MySQL date,datetime,timestamp區別及相互轉換


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區別及相互轉換


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM