1. 程式人生 > >MySQL中DATETIME、DATE和TIMESTAMP類型的區別

MySQL中DATETIME、DATE和TIMESTAMP類型的區別

有一個 pda not mat date_add after () day format

一、DATETIME

顯示格式:YYYY-MM-DD HH:MM:SS
時間範圍:[ ‘1000-01-01 00:00:00‘到‘9999-12-31 23:59:59‘]

二、DATE

顯示格式:YYYY-MM-DD
時間範圍:[‘1000-01-01‘到‘9999-12-31‘]

三、TIMESTAMP

顯示格式:YYYY-MM-DD HH:MM:SS
時間範圍:[ ‘1970-01-01 00:00:00‘到‘2037-12-31 23:59:59‘]

TIMESTAMP註意點:

TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在創建新記錄和修改現有記錄的時候都對這個數據列刷新。
TIMESTAMP DEFAULT CURRENT_TIMESTAMP 在創建新記錄的時候把這個字段設置為當前時間,但以後修改時,不再刷新它。
TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在創建新記錄的時候把這個字段設置為0,以後修改時刷新它。
TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss’ ON UPDATE CURRENT_TIMESTAMP 在創建新記錄的時候把這個字段設置為給定值,以後修改時刷新它

1、TIMESTAMP列不為空時,默認值可以為“0000-00-00 00:00:00”,但不能為null。
2、一個表可以存在多個TIMESTAMP列,但一個表只有一個TIMESTAMP類型的字段可以在默認值或者UPDATE部分用CURRENT_TIMESTAMP,即設置為數據更新而改變為數據庫系統當前值。
3、TIMESTAMP列的默認值是CURRENT_TIMESTAMP常量值。當記錄數據發生變化的時候,TIMESTAMP列會自動將其值設定為CURRENT_TIMESTAMP。
4、TIMESTAMP列創建後的格式是:
ALTER TABLE `course`
ADD COLUMN `birthday` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

ALTER TABLE `course`
ADD COLUMN `birthday` timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ ON UPDATE CURRENT_TIMESTAMP ;

ALTER TABLE `course`
ADD COLUMN `birthday` timestamp NULL AFTER `cname`;

四、日期格式轉換
1、字符串轉日期
select STR_TO_DATE(‘2013-01-29 13:49:18‘, ‘%Y-%m-%d %H:%i:%s‘)
2、日期轉字符串
select DATE_FORMAT(‘2013-01-29 13:49:18‘, ‘%Y-%m-%d %H:%i:%s‘)

五、日期的中常用的年月日時分秒星期月份等獲取方法
select TIMESTAMP(‘2013-01-29 13:50:27‘);
select DATE(‘2013-01-29 13:50:27‘);
select YEAR(‘2013-01-29 13:50:27‘);
select MONTH((‘2013-01-29 13:50:27‘);
select WEEK(‘2013-01-29 13:50:27‘);
select DAY(‘2013-01-29 13:50:27‘);
select TIME(‘2013-01-29 13:50:27‘);
select CURTIME();
select CURDATE();
select CURRENT_DATE;
select CURRENT_TIME;
select CURRENT_TIMESTAMP;
select NOW()

六、日期的運算:


SELECT DATE_ADD(‘2013-01-29 13:50:27‘, INTERVAL 1 DAY);
-> ‘2013-01-30 13:50:27‘
SELECT DATE_ADD(‘2013-01-29 13:50:27‘, INTERVAL 1 HOUR);
-> ‘2013-01-29 14:50:27‘
SELECT DATE_ADD(‘2013-01-29 13:50:27‘, INTERVAL 1 MONTH);
-> ‘2013-02-28 13:50:27‘

MySQL中DATETIME、DATE和TIMESTAMP類型的區別