批量修改時間和批量時間類型轉換

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

 

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