MySQL數據庫DATETIME和TIMESTAMP的特性異同

一、相同點
1.使用'YYYY-MM-DD HH:MM:SS'或 'YY-MM-DD HH:MM:SS'字符串格式賦值,如:
'2018-05-22 11:30:45'
'2018^05^22 11+30+45'
'2018/05/22 11*30*45'
'2018@05@22 11^30^45' 
都是合法的;
date和time間可以用字母T分隔,如:
'2018-05-22 11:30:45' 
'2018-05-22T11:30:45'
是相同的;
2.使用'YYYYMMDDHHMMSS' 或 'YYMMDDHHMMSS'字符串格式賦值如:
'20180522113028'
'180522113028' 
都是合法的;
3.使用YYYYMMDDHHMMSS 或 YYMMDDHHMMS數字格式賦值,如:
20180522113045
180522113045
都是合法的;
4.使用3.中數字格式時,長度必須是6,8,12或14。
當長度爲8時被識別爲:YYYYMMDD
當長度爲14時被識別爲:YYYYMMDDHHMMSS
當長度爲6時被識別爲:YYMMDD
當長度爲12時被識別爲:YYMMDDHHMMSS
5.使用YY開頭的格式時:年份在70-99 只會被識別爲1970-1999
年份在00-69 只會被識別爲2000-2069
6.都可以保留6位小數;
7.日期、月份和時間位數不是必須爲兩位數
'2018-5-22 1:2:3'
'2018-05-22 01:02:03'
兩者是相同的;
8.都可以自動被初始化或更新爲當前時間,在定義表時設置字段默認值:
初始化時獲取:CURRENT_TIMESTAMP,一般用戶create_time字段
更新時獲取: CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,一般用於update_time字段

二、不同點
1.範圍:
DATETIME: form '1000-01-01 00:00:00' to   '9999-12-31 23:59:59'
TIMESTAMP: from '1970-01-01 00:00:01' UTC to   '2038-01-19 03:14:07' UTC
帶小數範圍:
DATETIME: form '1000-01-01 00:00:00.000000'  to  '9999-12-31 23:59:59.999999'
TIMESTAMP: from '1970-01-01 00:00:01.000000' to  '2038-01-19 03:14:07.999999'
2.DATETIME是由TIMESTAMP的語法生成的;
3.對於TIMESTAMP,MySQL會將時間從當前時區轉換爲UTC存儲,讀取時再將其從UTC轉換爲當前時區;而DATETIME不會;

三、其他
1.本文針對MySQL 5.6分析
https://dev.mysql.com/doc/refman/5.6/en/datetime.html


                                                                                                                                                     Copyright © 2018 Ansel. All rights reserved.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章