date類型,mysql
mysql中date類型有:DATE、TIME、YEAR、DATETIME、TIMESTAMP。每個時間類型有一個有效值範圍和一個"零"值,當指定不合法的MySQL不能表示的值時使用"零"值,TIMESTAMP類型有專有的自動更新特性。
1、DATE
DATE範圍:1000-01-01/9999-12-31
格式:YYYY-MM-DD
用途:日期值
2、TIME
TIME範圍:'-838:59:59'/'838:59:59'
格式:HH:MM:SS
用途:時間值或持續時間
3、YEAR
YEAR範圍:1901/2155
格式:YYYY
用途:年份值
4、DATETIME
DATETIME範圍:1000-01-01 00:00:00/9999-12-31 23:59:59
格式:YYYY-MM-DD HH:MM:SS
用途:混合日期和時間值
5、TIMESTAMP
TIMESTAMP範圍:
1970-01-01 00:00:00/2038
結束時間是第 2147483647 秒,北京時間 2038-1-19 11:14:07,格林尼治時間 2038年1月19日 凌晨 03:14:07
格式:YYYYMMDD HHMMSS
用途:混合日期和時間值,時間戳。
拓展資料:
TIMESTAMP和DATETIME比較:
相同點:
兩者都可用來表示YYYY-MM-DD HH:MM:SS 類型的日期。
不同點:
他們的的存儲方式,大小(字節),表示的範圍不同。
TIMESTAMP,它把客户端插入的時間從當前時區轉化為UTC(世界標準時間)進行存儲。查詢時,將其又轉化為客户端當前時區進行返回。
DATETIME,不做任何改變,基本上是原樣輸入和輸出。
總結:TIMESTAMP和DATETIME 都可用來表示YYYY-MM-DD HH:MM:SS 類型的日期, 除了存儲方式和存儲範圍以及大小不一樣,沒有太大區別。但對於跨時區的業務,TIMESTAMP更為合適。
時間與時間戳之間轉換:
有些應用生成的時間戳是比這個多出三位,是毫秒錶示,如果要轉換,需要先將最後三位去掉(標準的10位數字,如果是13位的話可以以除以1000的方式),否則返回NULL
#將時間轉換為時間戳unix_timestamp
SELECT UNIX_TIMESTAMP('2019-02-22 13:25:07'); #1550813107
#將時間戳轉換為時間from_unixtime
SELECT FROM_UNIXTIME(1550813107); #2019-02-22 13:25:07
#NOW
SELECT UNIX_TIMESTAMP(NOW()); #1550813420
SELECT FROM_UNIXTIME(1550813420); #2019-02-22 13:30:20