在时间加减上,有很多函数可以使用,大部分sql中通用的是date_add,而且date_add比较灵活,可以自由设置加减类型,如年、月、日、时、分、秒等等
前面先示例date_add的用法,在示例其他时间加减的函数
-- 获取去年
select date_add(now(),interval -1 years)
-- 输出:2021-10-11 15:23:40.521
-- 获取下个月
select date_add(now(),interval 1 months)
-- 输出:2022-11-11 15:23:40.521
-- 获取明天
select date_add(now(),interval 1 days)
-- 输出:2022-10-12 15:23:40.521
-- 获取下一个小时
select date_add(now(),interval 1 hours)
-- 输出:2022-10-11 16:23:40.521
-- 获取下一分钟
select date_add(now(),interval 1 minutes)
-- 输出:2022-10-11 15:24:40.521
Impala中还自带了很多时间检查函数,这里逐个示例,不过函数太多,从记忆方便性上,当然是推荐大家记住date_add一个就可以了哈;
从使用方便性上,如果大家的时间数据经常是string类型,可以尝试记住一下函数,因为对string时间进行date_add时,是需要先进行to_timestamp转为时间格式的;而下面的函数,都是可以直接操作string时间的,不用转换格式;
而记住的方式很简单:时间精度 + 's' + '_' + 加减类型
示例:hours_add('2022-10-11 15:27:15',1)
months_sub('2022-10-11 15:27:15',1)
函数说明:
序号 | 语法类型/方法名称 | 输出类型 | 使用说明 |
1 | years_add(time, number ) | time | 增加指定年数 |
2 | years_sub(time, number ) | time | 减少指定年数 |
3 | months_add(time, number ) | time | 增加指定月数 |
4 | months_sub(time, number ) | time | 减少指定月数 |
5 | add_months(time, number ) | time | 增加指定月数 |
6 | weeks_add(time, number ) | time | 增加指定周数 |
7 | weeks_sub(time, number ) | time | 减少指定周数 |
8 | days_add(time, number ) | time | 增加指定天数 |
9 | days_sub(time, number ) | time | 减少指定天数 |
10 | date_add(time, number ) | time | 增加指定天数 |
11 | date_sub(time, number ) | time | 减少指定天数 |
12 | adddate(time,number ) | time | 增加指定天数 |
13 | subdate(time,number ) | time | 减少指定天数 |
14 | hours_add(time, number ) | time | 增加指定小时 |
15 | hours_sub(time, number ) | time | 减少指定小时 |
16 | minutes_add(time, number ) | time | 增加指定分钟 |
17 | minutes_sub(time, number ) | time | 减少指定分钟 |
18 | seconds_add(time, number ) | time | 增加指定秒数 |
19 | seconds_sub(time, number ) | time | 减少指定秒数 |
20 | milliseconds_add(time, number ) | time | 增加指定毫秒数 |
21 | milliseconds_sub(time, number ) | time | 减少指定毫秒数 |
22 | microseconds_add(time, number ) | time | 增加指定微秒数 |
23 | microseconds_sub(time, number ) | time | 减少指定微秒数 |
24 | nanoseconds_add(time, number ) | time | 增加指定纳秒数 |
25 | nanoseconds_sub(time, number ) | time | 减少指定纳秒数 |
26 | date_add(time, interval N months) | time | 使用参数计算日期增量值(增加) |
27 | date_sub(time, interval N hours) | time | 使用参数计算日期增量值(减少) |
示例内容:
序号 | SQL语句 | 输出 |
1 | years_add(now(),1) | 2023-10-11 15:27:16.538 |
2 | years_sub(now(),1) | 2021-10-11 15:27:16.538 |
3 | months_add(now(),1) | 2022-11-11 15:27:16.538 |
4 | months_sub(now(),1) | 2022-09-11 15:27:16.538 |
5 | add_months(now(),1) | 2022-11-11 15:27:16.538 |
6 | weeks_add(now(), 1) | 2022-10-18 15:27:16.538 |
7 | weeks_sub(now(), 1) | 2022-10-04 15:27:16.538 |
8 | days_add(now(),1) | 2022-10-12 15:27:16.538 |
9 | days_sub(now(), 1) | 2022-10-10 15:27:16.538 |
10 | date_add(now(), 1) | 2022-10-12 15:27:16.538 |
11 | date_sub(now(), 1) | 2022-10-10 15:27:16.538 |
12 | adddate(now(),1) | 2022-10-12 15:27:16.538 |
13 | subdate(now(),1) | 2022-10-10 15:27:16.538 |
14 | hours_add(now(),1) | 2022-10-10 16:27:16.538 |
15 | hours_sub(now(),1) | 2022-10-10 14:27:16.538 |
16 | minutes_add(now(),1) | 2022-10-10 15:28:16.538 |
17 | minutes_sub(now(),1) | 2022-10-10 15:26:16.538 |
18 | seconds_add(now(),1) | 2022-10-11 15:27:17.538 |
19 | seconds_sub(now(),1) | 2022-10-11 15:27:15.538 |
20 | milliseconds_add(now(),1000) | 2022-10-11 15:27:17.538 |
21 | milliseconds_sub(now(),1000) | 2022-10-11 15:27:15.538 |
22 | microseconds_add(now(),1000) | 2022-10-11 15:27:16.539 |
23 | microseconds_sub(now(),1000) | 2022-10-11 15:27:16.537 |
24 | nanoseconds_add(now(),1000) | 2022-10-11 15:27:16.538002 |
25 | nanoseconds_sub(now(),1000) | 2022-10-11 15:27:16.538000 |
26 | date_add(now(),interval 2 months) | 2022-12-11 15:27:16.538 |
27 | date_sub(now(),interval 2 hours) | 2022-10-11 13:27:16.538 |
以上就是相关时间加减函数的用法介绍和示例,希望对大家有帮助