SQL查询以检索当月最后一天的记录

哈里格

我有一张桌子,上面有很多日期的记录。我想执行一个查询,该查询仅返回落在该日期月份的最后一天的记录。就像是:

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()lastmonthofquarter()功能

汉素

使用DateSerial函数可计算给定日期的月份的最后一天。

传递零作为第三个参数,,实际返回的最后日期之前的一个月。

rdate = #2013-7-24#
? DateSerial(Year(rdate), Month(rdate), 0)
6/30/2013 

因此,要获取rdate月份的最后日期,请添加1month参数。

? DateSerial(Year(rdate), Month(rdate) + 1, 0)
7/31/2013 

您可能会怀疑这种方法将中断12月rdate,因为Month() + 1它将返回13。但是,DateSerial仍然可以应对。

rdate = #2013-12-1#
? DateSerial(Year(rdate), Month(rdate) + 1, 0)
12/31/2013 

如果要在Access应用程序会话中运行查询,则可以基于该方法构建VBA函数,并在查询中使用自定义函数。

但是,如果查询将从ODBC或OleDb连接到Access数据库运行,则该查询不能使用VBA用户定义的函数。在这种情况下,您可以DateSerial直接在查询中使用。

SELECT m.*
FROM mytable AS m
WHERE m.rdate = DateSerial(Year(m.rdate), Month(m.rdate) + 1, 0)

如果您rdate所有值都将午夜作为时间成分,那应该可以如果这些值包括其他时间,请使用DateValue

WHERE DateValue(m.rdate) = DateSerial(Year(m.rdate), Month(m.rdate) + 1, 0)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

计算当月的最后一天

如何计算当月的最后一天?

指定当月的最后一天 pandas .to_datetime()

如何SQL查询有交易的月份的最后一天?

计算当月星期几的第一天和最后一天

当月/年变化时查询前一天的数据

SQL SSRS Reportbuilder 3.0 2012前一个月的当月最后一天

DAX查询最后一天的状态

如何在sql中的查询之间添加月份的第一天和最后一天?

熊猫-在自定义日期时间索引中返回当月的最后一天/第一天

当一天设置为当月的第一天并减少时,如何解决这个问题,它应该成为上个月的最后一天?

使用Ruby(DateTime)检索每月的第一天和最后一天

如何在awk中获取当月最后一天的价值

如何通过 Ni-Fi 表达语言获取当月的最后一天?

NSDateFormatter在输入的日期为当月的最后一天时导致崩溃

对日期小于等于当月最后一天的日期应用过滤器

如果给定日期是当月的最后一天,如何增加月份数?

获取AppleScript中月份的最后一天以及当月的假期

如何在 PYTHON 中从当月(EOMONTH 的 Excel 版本)中找到该月的最后一天?

SQL获取一个ID的最近90天记录,每个ID的最后一天都不同

SQL 查询日期加一天

sql查询以获取确切的最后一天结果

如何在Sql Server查询中获取每月最后一天的行

SQL查询以查找6个月内的每月的最后一天

mysql“之间”查询,包括第一天和最后一天

DAX-计算上个月最后一天到当月最后一天之间的平均值

SQL查询使用查找表来选择基于一天的记录数

查询以检索一天中的股票报价变化

sql查询不检索所有记录只检索最后一条记录