访问当月的 2010 查询

Posted

技术标签:

【中文标题】访问当月的 2010 查询【英文标题】:Access 2010 Query for current month 【发布时间】:2013-01-29 16:35:17 【问题描述】:

我已经建立了一个 Access 数据库来跟踪我们团队的质量保证监视器。我们的团队有几个负责监督团队代表的领导。

我想构建一个查询,该查询将返回当月指定潜在客户的所有 QA。我有指定潜在客户的标准并且已经让它发挥作用,但是每次我尝试为当月设置标准时,它最终都没有返回任何结果。

搜索 Google 一再建议使用Month(Now()),但这也不起作用。

我该如何编写这个查询?

【问题讨论】:

【参考方案1】:

受@Justin-rentmeester 启发但经过改进以始终返回所需结果的答案:

将以下内容添加到查询的WHERE 子句中:

MyDateField BETWEEN    
DateSerial(Year(Date()),Month(Date()),1) 
AND
DateAdd("s", -1, DateAdd("m", 1, DateSerial(Year(Date()),Month(Date()),1))), DateSerial(Year(Date()),Month(Date()),1)

我建议您使用 SQL 视图来添加此标准。

这种方法也适用于包含时间的日期,以及少于 31 天的月份。

【讨论】:

【参考方案2】:

将此代码放在标准字段 - Date()-Day(Now()-1) 和 Date() 之间

【讨论】:

【参考方案3】:

我编辑我的答案!

假设 workdate 是您的日期字段。

更短的where clause 可以是

 where Year(workDate) = Year(Date()) and Month(workDate) = Month(Date())

这将过滤当月的所有记录。

如果您想进一步过滤截至今天的记录,请添加

and workdate <= Date()

如果您没有在表中存储未来的日期记录,则这可能没有必要。

祝你好运。

【讨论】:

感谢您的回复。那也没有用。我确实发现使用 Between DateSerial(Year(Date()),Month(Date()),1) And Date() 似乎完成了我正在寻找的东西。这只是说月(现在)的更长,更困难的方式吗?如果是这样,有什么不同的想法吗? 你不明白。 Month 返回月份(数字),DateSerial 返回日期值。 Saju 的答案应该有效,因为他将年份数字与年份数字和月份数字与月份数字进行比较。但是,您不能将数字与日期进行比较!所以Month(Now) = someDate不行,因为等号两边的表达式数据类型不同。【参考方案4】:

要在 Access 的“设计”视图中执行此操作,请选择报告中所需的所有列,以及要限制为当前月份的日期列,作为标准放置:介于

DateSerial(Year(Date()),Month(Date()),1) 

还有

DateSerial(Year(Date()),Month(Date()),31)

【讨论】:

这个答案会导致没有 31 天的月份出现问题。 DateSerial(2017, 2, 31) 返回 2017 年 3 月 3 日,因此它可以返回当月以外的帖子。此外,时间部分在每月 31 日的 datetime 对象将大于您的最后一个条件

以上是关于访问当月的 2010 查询的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver查询当月记录

SQL 查询帮助:选择当月的随机员工

基于当月的动态 SQL 查询

PostgreSQL:如何查询当月的最后一天?

php 总结(14) 每个客服当月每天的资料查询,多重数组查询

MYSQL查询语句问题 查询当月和上一月的查询语句怎么写?