select sum(salary) -- probably also put some interval identification here
from t
where date_column between date '2019-01-05' and date '2019-03-13' -- put startDate and endDate here
group by trunc(months_between(date_column, date '2019-01-05')) -- put startDate here
select trunc(date - interval 4 day, 'MON') as yyyymm, sum(salary)
from t
group by trunc(date - interval 4 day, 'MON')
order by min(date);
``` `trunc()` 与 `'MON'` 参数将日期截断为月初。也可以将值转换为字符串:
select to_char(date - interval 4 day, 'YYYY-MM') as yyyymm, sum(salary) from t group by to_char(date - interval 4 day, 'YYYY-MM') order by min(date);
3条答案
按热度按时间smdnsysy1#
根据与开始日期的距离(以月为单位)对行进行分组:
gmol16392#
我只需要减去4天,然后提取月份:
select to_char(date - interval 4 day, 'YYYY-MM') as yyyymm, sum(salary)
from t
group by to_char(date - interval 4 day, 'YYYY-MM')
order by min(date);
nmpmafwu3#
java.time文件
如何找到截止日期:
输出为:
截止日期:【2019-01-05、2019-02-05、2019-03-05】
现在,您可以查询oracle数据库中从一个剪切日期(包含)到下一个剪切日期(独占),最后从最后一个剪切日期到结束日期(包含或独占,具体取决于您的要求)的每个时间间隔。
如果开始日期是一个月的29日、30日或31日,结果可能会有点出乎意料。例如:
截止日期:【2019-01-31、2019-02-28、2019-03-31】
一个挑战是解析日期,因为有时你会得到一个月的缩写(一月而不是一月),有时是一个完整的月名(三月,而不是三月)。格式模式字符串中的方括号表示可选的部分,因此我们的格式化程序将接受一个完整的月份名
MMMM
或缩写通过MMM
.如何通过考试
LocalDate
对象可以查看底部的链接。链接
oracle教程:date time解释如何使用java.time。
将java.time.localdate对象插入sql数据库(如h2)或从中提取java.time.localdate对象