mysql 日期和时间类型
日期和時間類型
表示時間值的日期和時間類型為DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每個時間類型有一個有效值范圍和一個"零"值,當指定不合法的MySQL不能表示的值時使用"零"值。
TIMESTAMP類型有專有的自動更新特性,將在后面描述。
| 類型 | 范圍 | 格式 | 用途 | ||
| DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 | |
| TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 時間值或持續時間 | |
| YEAR | 1 | 1901/2155 | YYYY | 年份值 | |
| DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和時間值 | |
| TIMESTAMP | 4 | 1970-01-01 00:00:00/2038 結束時間是第?2147483647?秒,北京時間?2038-1-19 11:14:07,格林尼治時間 2038年1月19日 凌晨 03:14:07 | YYYYMMDD HHMMS |
日期時間類型
| MySQL數據類型 | 含義 |
| date | 日期 '2008-12-2' |
| time | 時間 '12:25:36' |
| datetime | 日期時間 '2008-12-2 22:06:44' |
| timestamp | 自動存儲記錄修改時間 |
注意:若定義一個字段為timestamp,這個字段里的時間數據會隨其他字段修改的時候自動刷新,所以這個數據類型的字段可以存放這條記錄最后被修改的時間。
創建一個t8表,測試: mysql>?create?table?t8?(?n1?year,?n2?date,?n3?time,?n4?datetime?); Query?OK,?0?rows?affected?(0.04?sec)#n1(year)插入"1901"值. mysql>?insert?into?t8?(n1)?values?(1901); Query?OK,?1?row?affected?(0.00?sec)#查看表中的數據. mysql>?select?*?from?t8; +------+------+------+------+ |?n1???|?n2???|?n3???|?n4???| +------+------+------+------+ |?1901?|?NULL?|?NULL?|?NULL?| +------+------+------+------+ 1?row?in?set?(0.00?sec)#n2(date)插入"2017-12-04"值. mysql>?insert?into?t8?(n2)?values?("2017-12-04"); Query?OK,?1?row?affected?(0.04?sec)#查看表中的數據. mysql>?select?*?from?t8; +------+------------+------+------+ |?n1???|?n2?????????|?n3???|?n4???| +------+------------+------+------+ |?1901?|?NULL???????|?NULL?|?NULL?| |?NULL?|?2017-12-04?|?NULL?|?NULL?| +------+------------+------+------+ 2?rows?in?set?(0.00?sec)#n3(time)插入"18:12:03"值. mysql>?insert?into?t8?(n3)?values?("18:12:03"); Query?OK,?1?row?affected?(0.01?sec) mysql>?select?*?from?t8; +------+------------+----------+------+ |?n1???|?n2?????????|?n3???????|?n4???| +------+------------+----------+------+ |?1901?|?NULL???????|?NULL?????|?NULL?| |?NULL?|?2017-12-04?|?NULL?????|?NULL?| |?NULL?|?NULL???????|?18:12:03?|?NULL?| +------+------------+----------+------+ 3?rows?in?set?(0.00?sec)#n4(datetime)插入"2018-12-03?18:12:03"值. mysql>?insert?into?t8?(n4)?values?("2018-12-03?18:12:03"); Query?OK,?1?row?affected?(0.00?sec) mysql>?select?*?from?t8; +------+------------+----------+---------------------+ |?n1???|?n2?????????|?n3???????|?n4??????????????????| +------+------------+----------+---------------------+ |?1901?|?NULL???????|?NULL?????|?NULL????????????????| |?NULL?|?2017-12-04?|?NULL?????|?NULL????????????????| |?NULL?|?NULL???????|?18:12:03?|?NULL????????????????| |?NULL?|?NULL???????|?NULL?????|?2018-12-03?18:12:03?| +------+------------+----------+---------------------+ 4?rows?in?set?(0.00?sec)#timestamp屬性,自動更新時間戳. mysql>?create?table?t9?(->?id?int,->?ts?timestamp->?); Query?OK,?0?rows?affected?(0.00?sec) mysql>?insert?into?t9?(id)?values?(1); Query?OK,?1?row?affected?(0.00?sec) mysql>?select?*?from?t9; +------+---------------------+ |?id???|?ts??????????????????| +------+---------------------+ |????1?|?2019-01-26?19:04:40?| +------+---------------------+ 1?row?in?set?(0.00?sec)
TIMESTAMP和DATETIME的不同點:
兩者的存儲方式不一樣
對于TIMESTAMP,它把客戶端插入的時間從當前時區轉化為UTC(世界標準時間)進行存儲。查詢時,將其又轉化為客戶端當前時區進行返回。
而對于DATETIME,不做任何改變,基本上是原樣輸入和輸出。
兩者所能存儲的時間范圍不一樣
timestamp所能存儲的時間范圍為:'1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999'。
datetime所能存儲的時間范圍為:'1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'。
轉載于:https://blog.51cto.com/215687833/2349363
總結
以上是生活随笔為你收集整理的mysql 日期和时间类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NSUserDefaults 简介,使用
- 下一篇: 实战:搭建CA认证中心,使用CA证书搭建