8a中如何用SQL来获取当前日期的上一季度的天数
引言:
实际业务现场,会用到根据当前日期获取上一季度的天数的情况,这种情况可用用如下的方式来进行获取。
用到的函数:
1、datediff:
DATEDIFF(expr,expr2),返回开始日期 expr 和结束日期 expr2 之间的天数,expr和expr2是date或者datetime表达式。但只有日期部分用于计算。如果用于计
算日期间隔的参数不是一个date或者datetime类型,例如TIME型数据,则计算结果是不可信的。
2、last_day:
LAST_DAY(date),返回date中当前月对应的最后一天的值。其中,date为日期或日期时间类型,如果参数date无效,则返回NULL。
3、makedate:
MAKEDATE(year,dayofyear),给出年份值year和一年中的天数值dayofyear,返回日期值。dayofyear必须大于 0,否则返回NULL。
4、extract:
EXTRACT(type FROM date),用于指定从日期中提取的部分,可返回的type类型有:date、time、year、quarter、month、day、week、hour、minute、second、microsecond。
5、quarter:
QUARTER(date),返回date所代表的时间在年中的季度数,范围为1~4。
6、date_format:
DATE_FORMAT(date,FORMAT),依照FORMAT字符串格式化date值,下表是常用的格式值及说明。
格式 | 描 述 |
| %a | 星期名的英文缩写形式(Sun...Sat) |
| %b | 月份的英文缩写形式(Jan...DEC) |
| %c | 月份的数字形式(0...12) |
| %D | 有英文后缀的某月的第几天(0th, 1st, 2nd, 3rd...) |
| %d | 月份中的天数,数字形式(00...31) |
| %e | 月份中的天数,数字形式(0...31) |
| %f | 微秒(000000...999999) |
| %H | 小时,24 小时制(00...23) |
| %h | 小时,12 小时制(0,1...12) |
| %I | 小时,12 小时制,个位数字前加 0(01...12) |
| %i | 分钟,数字形式(00...59) |
| %j | 一年中的天数(001...366) |
| %k | 小时,24 小时制(0...23) |
| %l | 小时,12 小时制(1...12) |
| %M | 月份,英文形式全拼(January...December) |
| %m | 月份,数字形式(00...12) |
| %p | AM 或 PM |
| %r | 时间,12 小时制(HH:MI:SS 后面紧跟 AM 或 PM) |
| %S | 秒(00...59) |
| %s | 秒(00...59) |
| %T | 时间,24 小时(HH:MI:SS) |
| %U | 星期(00...53),星期日是一个星期的第一天 |
| %u | 星期(00...53),星期一是一个星期的第一天 |
| %V | 星期(01...53),星期日是一个星期的第一天。与“%X”一起使用 |
| %v | 星期(01...53),星期一是一个星期的第一天。与“%x”一起使用 |
| %W | 星期名的英文全拼形式(Sunday...Saturday) |
| %w | 一星期中的哪一天(0=Sunday...6=Saturday) |
| %X | 以 4 位数字形式反映周所在的年份,星期日周的第一天 |
| %x | 以 4 位数字形式反映周所在的年份,星期日周的第一天 |
| %Y | 4 位数字形式表达的年份 |
| %y | 2 位数字形式表达的年份 |
| %% | 一个字母“%” |
获取当前日期的上一季度天数的实际写法如下:
select datediff(
LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM current_date),1) + interval QUARTER(current_date)*3-4 month)
,date(concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM current_date),1) + interval QUARTER(current_date)*3-6 month),'%Y-%m-'),'01')))+1;
在gbase 8a中的执行结果如下,当前是9月9号,上个季度是Q2,4月30天,5月31天,6月30天,总体天数就是91天:

热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25052
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526