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

本文介绍了如何在数据库中对datetime类型和时间戳进行操作,包括datetime类型的日期增加/减少,datetime转int类型时间戳,时间戳转datetime,时间戳的增减,以及datetime类型时间的同时增减天、时、分、秒。提供了相应的SQL语句示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值