我需要编写一些 SQL 来确定当前月份是否基于指定日期的季度。
如果我给它'2015-04-09',该函数应该确定月份是等于 1、4、7 还是 10。如果我给它'2015-05-09',它将是2,5,8,11。等。。。
如果整个解决方案自包含在 SELECT 语句中,则效果最佳。我不太确定如何处理这个问题,我真的找不到适合我的情况的东西。我不在乎日期或年份,我只需要验证月份。
看起来你想知道这个表达式什么时候为真:
(mod(EXTRACT(MONTH FROM SYSDATE()), 3)) = (mod(EXTRACT(MONTH FROM <input date>), 3))
您可以使用
month()
提取月份,然后使用模算术。 像这样:
select (case when mod(month($input) - month($thedate), 3) = 0 then 1
else 0
end)
如果您有季度数字,并且想要获取季度的起始月份:
QuarterNo * 3 - 2
如果你想得到季度数字,给定月份数字:
floor((MonthNo-1) /3) +1
如果您有日期列,并且想要季度数字,请使用:
DATEPART(qurter, date_column)