好的,所以我在表格中有大量记录,并且它们有许多不同的日期。 我想只记录那些日期属于其所在季度的最后一天的记录。
即。我基本上需要一个lastDayOfQuarter(date)
函数的等效函数来计算传递给它的日期的季度中的最后一天。
e.g。 lastDayOfQuarter(#16/05/2013#) = #30/06/2013#
我的查询可能如下:
SELECT * FROM mytable
WHERE mytable.rdate = lastDayOfQuarter(mytable.rdate);
此查询将在PDO上运行,因此不允许使用VBA。仅限本机MS Access。 我也不想使用字符串操作,因为美国和欧盟日期之间存在差异,可能会导致问题。
答案 0 :(得分:1)
我正在回答自己,在HansUp回答previous question of mine寻找月末记录的帮助下,我发现了一个很容易实现的方法:
WHERE DateValue(m.rdate) = DateSerial(Year(m.rdate), Month(m.rdate) + 1, 0)
AND Month(m.rdate) IN(3,6,9,12)
答案 1 :(得分:0)
“季度的最后一天”对于不同的用户可能会有所不同。您最好根据业务规则构建“lastdays”表,然后在查询中使用该表。
答案 2 :(得分:0)
这里简短回答......试试
Select DateAdd(day, -1, dateadd(qq, DATEDIFF(qq, 0, 'year-month-day'), 0))
今天应该给你
2013-06-30 00:00:00.000
对于你的表,你应该使用:
SELECT * FROM mytable
WHERE mytable.rdate = DateAdd(day, -1, dateadd(qq, DATEDIFF(qq, 0, mytable.rdate), 0));