批量修改时间和批量时间类型转换

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); 

ALTER TABLE nb_alarm_status CREATE create_time_stamp INT(20) DEFAULT NULL; -- ,添加时间戳的列,关键字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);

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):可以实现这个功能

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

 

你可能感兴趣的:(数据库,mysql)