- 设置时间字段,从一个时间点随机生成数据,可以通过DATE_ADD 和 DATE_SUB函数来完成
DATE_ADD 和 DATE_SUB函数
DATE_ADD(date,INTERVAL expr type) # 给日期添加指定的时间间隔。
DATE_SUB(date,INTERVAL expr type) # 给日期减少指定的时间间隔。
示例:
update booking
set createTime=DATE_ADD('2021-01-01 00:00:00', INTERVAL FLOOR(1 + (RAND() * 18144000)) SECOND ) ;
- date : 指定的日期
- INTERVAL : 关键字
- expr:是具体的时间间隔
- type:是时间单位。
- 注意:type可以复合型的,比如YEAR_MONTH
Type值 | 含义 |
---|---|
MICROSECOND | 间隔单位:毫秒 |
SECOND | 间隔单位:秒 |
MINUTE | 间隔单位:分钟 |
HOUR | 间隔单位:小时 |
DAY | 间隔单位:天 |
WEEK | 间隔单位:星期 |
MONTH | 间隔单位:月 |
QUARTER | 间隔单位:季度 |
YEAR | 间隔单位:年 |
SECOND_MICROSECOND | 复合型,间隔单位:秒、毫秒,expr可以用两个值来分别指定秒和毫秒 |
MINUTE_MICROSECOND | 复合型,间隔单位:分、毫秒 |
MINUTE_SECOND | 复合型,间隔单位:分、秒 |
HOUR_MICROSECOND | 复合型,间隔单位:小时、毫秒 |
HOUR_SECOND | 复合型,间隔单位:小时、秒 |
HOUR_MINUTE | 复合型,间隔单位:小时分 |
DAY_MICROSECOND | 复合型,间隔单位:天、毫秒 |
DAY_SECOND | 复合型,间隔单位:天、秒 |
DAY_MINUTE | 复合型,间隔单位:天、分 |
DAY_HOUR | 复合型,间隔单位:天、小时 |
YEAR_MONTH | 复合型,间隔单位:年、月 |
DATE_ADD 示例:
-
给年,月添加值
select date_add('2020-01-18 21:15:25', interval '1 2' YEAR_MONTH); # 2021-03-18 21:15:25
-
加
1
秒到时间:2017-12-31 23:59:59
SELECT DATE_ADD('2017-12-31 23:59:59', INTERVAL 1 SECOND) as result; # 2018-01-01 00:00:00
-
在时间
2021-12-31 10:10:10
上加1
分1
秒。SELECT DATE_ADD('2021-12-31 10:10:10', INTERVAL '1:1' MINUTE_SECOND) as result; # 2021-12-31 10:11:11
-
在时间
2000-01-01 00:00:00
上加-1
天5
小时。SELECT DATE_ADD('2000-01-01 00:00:00', INTERVAL '-1 5' DAY_HOUR) as result; # 1999-12-30 19:00:00
-
添加
1
秒和 123456 微秒到时间:2021-01-20 12:59:30.000000
:SELECT DATE_ADD('2021-01-20 12:59:30.000000',INTERVAL '1.123456' SECOND_MICROSECOND) as result; # 2021-01-20 12:59:31.123456
DATE_SUB示例
-
从时间减
1
秒:2017-12-31 23:59:59
SELECT DATE_SUB('2017-12-31 23:59:59', INTERVAL 1 SECOND) as result; # 2017-12-31 23:59:58
-
在时间
2021-12-31 10:10:10
上减1
分1
秒。SELECT DATE_SUB('2021-12-31 10:10:10', INTERVAL '1:1' MINUTE_SECOND) as result; # 2021-12-31 10:09:09
-
减去
1
秒和 123456 微秒到时间:2021-01-20 12:59:30.000000
SELECT DATE_SUB('2021-01-20 12:59:30.000000',INTERVAL '1.123456' SECOND_MICROSECOND) as result; # 2021-01-20 12:59:28.876544
-
注意点:
-
如果起始时间错误,生成的时间为null
SELECT DATE_SUB('2017-02-31 23:59:59', INTERVAL 1 SECOND) as result; # (NULL)
-