我有一张包含许多日期记录的表格。我想执行一个查询,该查询仅返回该日期月份最后一天的记录。就像是:
SELECT * FROM mytable
WHERE DATEPART(d, mytable.rdate) = DATEPART(d,DATEADD(m,1,DATEADD(d, -1, mytable.rdate)))
除非这不起作用rdate
,因为参数右侧的 应该是该月的最后一天,dateadd
以便返回正确的比较。
基本上有没有一种简洁的方法来进行这种比较?四分之一的等价物也将非常有帮助,但无疑更复杂。
编辑:
本质上,我想检查给定日期是否是它所属月份(或季度)的最后一个日期。如果是,则返回该记录。这将涉及一些函数来返回任何日期的月份的最后一天。例如lastdayofmonth('2013-06-10') = 30
(因此不会返回此记录。
编辑2:
对于返回属于该季度最后一天的记录的情况,它们需要类似于:
SELECT * FROM mytable
WHERE DATEPART('d', mytable.rdate) = lastdayofmonth(mytable.rdate)
AND DATEPART('m', mytable.rdate) = lastmonthofquarter(mytable.rdate);
棘手的一点是lastdayofmonth()
andlastmonthofquarter()
函数