MS Access SQL查询,用于测试本季度最后一天的日期

时间:2013-07-24 16:09:05

标签: sql ms-access

好的,所以我在表格中有大量记录,并且它们有许多不同的日期。 我想只记录那些日期属于其所在季度的最后一天的记录。

即。我基本上需要一个lastDayOfQuarter(date)函数的等效函数来计算传递给它的日期的季度中的最后一天。

e.g。 lastDayOfQuarter(#16/05/2013#) = #30/06/2013#

我的查询可能如下:

SELECT * FROM mytable
WHERE mytable.rdate = lastDayOfQuarter(mytable.rdate);

此查询将在PDO上运行,因此不允许使用VBA。仅限本机MS Access。 我也不想使用字符串操作,因为美国和欧盟日期之间存在差异,可能会导致问题。

3 个答案:

答案 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));