1

好的,所以我在表中有大量记录,它们有许多不同的日期。我只想重新检索那些日期在其所在季度的最后一天的记录。

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

例如lastDayOfQuarter(#16/05/2013#) = #30/06/2013#

我的查询可能如下所示:

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

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

4

3 回答 3

1

我的回答是,在HansUp的帮助下,我回答了我之前的一个查找月末记录的问题,我发现了一种非常简单的方法来实现这一点:

WHERE DateValue(m.rdate) = DateSerial(Year(m.rdate), Month(m.rdate) + 1, 0)
  AND Month(m.rdate) IN(3,6,9,12)
于 2013-07-25T08:13:52.520 回答
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));
于 2013-07-24T16:22:06.587 回答
0

对于不同的用户,“季度的最后一天”可能会有所不同。您最好根据业务规则构建“lastdays”表,然后在查询中使用该表。

于 2013-07-24T16:12:42.487 回答