1、datetime類型日期增加/減少
UPDATE table_name SET col_name=DATE_ADD(INTERVAL number DAY) / DATE_SUB(INTERVAL number DAY);
-- <把所有日期加/減number天>
day:天 hour:小時 minute:分鐘 second:秒 microsecond:毫秒
week:周 month:月 quarter:季 year:年
UPDATE nb_alarm_status SET create_date = DATE_ADD(create_date,INTERVAL 5 DAY); --增加5天; -5:增加-5天,即減少5天
UPDATE nb_alarm_status SET create_date = DATE_SUB(create_date,INTERVAL 6 DAY); --減少6天; -6:減少-6天,即增加6天
2、datetime類型轉換成int類型時間戳
ALTER TABLE table_name ADD {COLUMN} col_name; <關鍵字column可以不寫>
UPDATE table_name SET col_name=UNIX_TIMESTAMP(col_name1); <col_name:新增的時間戳字段,col_name1:要轉化的字段>
ALTER TABLE nb_alarm_status CREATE create_time_stamp INT(20) DEFAULT NULL; -- <ALTER TABLE table_name ADD COLUMN col_name>,添加時間戳的列,關鍵字column可以不寫;也可以不添加該列,直接轉換<注意字段類型>;添加該列目的在於方便對比
UPDATE nb_alarm_status SET create_time_stamp=UNIX_TIMESTAMP(create_date); -- 將datetime類型轉換成int類型時間戳
3、時間戳轉換成datetime類型
ALTER TABLE table_name ADD {COLUMN} col_name; <關鍵字column可以不寫>
UPDATE table_name SET col_name=FROM_UNIXTIME(col_name1); <col_name:新增的datetime類型字段,col_name1:要轉化的字段>
ALTER TABLE nb_alarm_status ADD tt datetime DEFAULT NULL; -- 添加datetime類型時間的列;也可以不添加該列,直接轉換;添加該列目的在於方便對比
UPDATE nb_alarm_status SET tt=FROM_UNIXTIME(create_time_stamp); -- 將時間戳轉換成datetime類型
4、時間戳 -- 時間增減
TIMESTAMPADD(unit,interval,datetime_expr):可以實現這個功能 <unit:單位,interval:增加/(負數)減少的天數,datetime_expr:表達式>
day:天 hour:小時 minute:分鐘 second:秒 microsecond:毫秒
week:周 month:月 quarter:季 year:年
UPDATE nb_alarm_status SET create_time_stamp=UNIX_TIMESTAMP(TIMESTAMPADD(DAY,3,FROM_UNIXTIME(create_time_stamp))); -- 以天爲單位,增加3天;先將create_date_stamp轉換成datetime類型再進行計算
5、datetime類型時間同時增加/減少天、時、分、秒
DATE_ADD/SUB(date,INTERVAL expr unit) -- data:要計算的時間;INTERVAL:關鍵字<不可少>;expr:表達式;unit:計算單位
expr unit 表達式和計算方式詳解
'5:10' HOUR_MINUTE -- 5小時10分鐘
'1:5:2' HOUR_SECOND -- 1小時5分鐘2秒
'1 1:5:10' DAY_SECOND -- 1天1小時5分鐘10秒
注意:‘天’和‘時間’之間有空格分開;DAY_SECOND:DAY-計算的開始時間單位,SECOND-計算的結束時間單位
SELECT DATE_ADD('2019-03-21 15:03:04',INTERVAL '1:5:2' HOUR_SECOND), -- 增加1小時5分鐘2秒
DATE_ADD('2019-03-21 15:03:04',INTERVAL '10:15' MINUTE_SECOND), -- 增加10分鐘15秒
DATE_ADD('2019-03-21 15:03:04',INTERVAL '1 10:15' DAY_MINUTE); -- 增加1天10小時15分鐘
--> 2019-03-21 16:08:06
--> 2019-03-21 15:13:19
--> 2019-03-23 01:18:04
SELECT DATE_SUB('2019-03-21 15:03:04',INTERVAL '1:5:2' HOUR_SECOND), -- 減少1小時5分鐘2秒
DATE_SUB('2019-03-21 15:03:04',INTERVAL '10:15' MINUTE_SECOND), -- 減少10分鐘15秒
DATE_SUB('2019-03-21 15:03:04',INTERVAL '1 10:15' DAY_MINUTE); -- 減少1天10小時15分鐘
--> 2019-03-21 13:58:02
--> 2019-03-21 14:52:49
--> 2019-03-20 04:48:04
另一種實現方式:
time ± INTERVAL expr unit -- time:要計算的時間;INTERVAL:關鍵字;expr:表達式;unit:計算單位
SELECT ('2019-04-02 14:19:51' + INTERVAL 2 HOUR),
('2019-04-02 14:19:51' + INTERVAL '2:10' HOUR_MINUTE),
('2019-04-02 14:19:51' + INTERVAL '1 2:10' DAY_MINUTE),
('2019-04-02 14:19:51' - INTERVAL 2 HOUR),
('2019-04-02 14:19:51' - INTERVAL '2:10' HOUR_MINUTE),
('2019-04-02 14:19:51' - INTERVAL '1 2:10' DAY_MINUTE);
--> 2019-04-02 16:19:51
--> 2019-04-02 16:29:51
--> 2019-04-03 16:29:51
--> 2019-04-02 12:19:51
--> 2019-04-02 12:09:51
--> 2019-04-01 12:09:51