Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access access查询,返回上一年截至今天同一天、同一月份但上一年的记录_Ms Access_Vba - Fatal编程技术网

Ms access access查询,返回上一年截至今天同一天、同一月份但上一年的记录

Ms access access查询,返回上一年截至今天同一天、同一月份但上一年的记录,ms-access,vba,Ms Access,Vba,我需要在日期字段上指定访问条件的帮助,该字段将从我的数据库中提取从去年年初、2014年1月1日到今天的同一天、同一个月的记录。提供此信息的原因是能够比较今年的年初至今记录(以及以后的计数)与去年的年初至今计数。。。因此,如果今天的日期是2015年8月20日,我希望能够从2015年1月1日到2015年8月20日,然后将其与2014年1月1日到2014年8月20日进行比较。 只是为了提醒一下,我使用相同的查询和表单根据每周、每季度的日期范围统计记录,因此我不能使用带有“开始”和“结束”日期的文本框。

我需要在日期字段上指定访问条件的帮助,该字段将从我的数据库中提取从去年年初、2014年1月1日到今天的同一天、同一个月的记录。提供此信息的原因是能够比较今年的年初至今记录(以及以后的计数)与去年的年初至今计数。。。因此,如果今天的日期是2015年8月20日,我希望能够从2015年1月1日到2015年8月20日,然后将其与2014年1月1日到2014年8月20日进行比较。
只是为了提醒一下,我使用相同的查询和表单根据每周、每季度的日期范围统计记录,因此我不能使用带有“开始”和“结束”日期的文本框。此外,我不能在查询中预先指定任何日期。任何想法都将不胜感激。谢谢大家

获取上一年的截止日期
DateSerial
将满足您的需要

Where [DateColumn] >= DateSerial(year(now)-1,1,1) 
      and [DateColumn] <= DateSerial(year(now)-1,month(now),day(now))
其中[DateColumn]>=DateSerial(年份(现在)-1,1,1)
和[DateColumn]=dateadd(“yyyy”,datediff(“yyyy”,0,现在)-2,2)

而[DateColumn获取去年的截止日期
DateSerial
将实现您想要的功能

Where [DateColumn] >= DateSerial(year(now)-1,1,1) 
      and [DateColumn] <= DateSerial(year(now)-1,month(now),day(now))
其中[DateColumn]>=DateSerial(年份(现在)-1,1,1)
和[DateColumn]=dateadd(“yyyy”,datediff(“yyyy”,0,现在)-2,2)

和[DateColumn以下表达式可用作查询设计器中日期字段的条件

>="01/01/" & (Year(Date())-1) AND <=Day(Date()) & "/" & Month(Date()) & "/" & Year(Date())-1

=“01/01/”&(年(日期())-1)和以下表达式可用作查询设计器中日期字段的条件

>="01/01/" & (Year(Date())-1) AND <=Day(Date()) & "/" & Month(Date()) & "/" & Year(Date())-1
=“01/01/”&(年(日期())-1)和您需要在SQL中使用日期():

其中[DateColumn]>=DateSerial(年份(日期())-1,1)
和[DateColumn]您需要在SQL中使用Date():

其中[DateColumn]>=DateSerial(年份(日期())-1,1)


和[DateColumn]您永远不应该对日期使用字符串处理,并且dd/mm/yyyyy在SQL.agree中会失败;使用字符串生成日期不是最佳做法,在可能的情况下应该避免……在这种情况下,DateSerial()表示“任何想法都将非常感谢。”这个答案确实提供了所需的结果…我可以工作,但是对于介于1和12之间的日期值,它将失败,因为SQL会将dd/mm/yyyy字符串读取为mm/dd/yyyy。始终使用yyyy-mm-dd格式。您永远不应该对日期使用字符串处理,而在SQL中dd/mm/yyyy将失败。同意;使用字符串生成日期不是最佳做法在这种情况下,应该尽可能避免使用…DateSerial()。OP表示“任何想法都将不胜感激。”这个答案确实提供了所需的结果…我可以工作,但是对于介于1和12之间的日期值,它将失败,因为SQL将dd/mm/yyyy字符串读取为mm/dd/yyyy。始终使用yyyy-mm-dd格式。@Gustav,您在什么环境下
现在不工作?
日期
现在都在
日期时间
mo杜勒。我想如果一个可行,另一个也会。谢谢@Brad。两种方法对我都有效。谢谢you@Brad:一个查询-正如提问者所说。@Gustav这很奇怪。当你在查询设计器中选择“现在”并运行它时,它告诉你什么?你是正确的。
now
按原样工作。
Date
Time
do。因此,我也一直在SQL中使用
Now()
。我总是使用
Date
Date()
不需要时间的时候-就像这里。@Gustav,你在什么环境下,
现在
不工作?
日期
和现在都在
日期时间
模块中。我希望如果一个有效,另一个也会。谢谢@Brad。这两种方法对我都有效。谢谢you@Brad:一个问题-正如提问者所说的那样。@Gustav那是cu当你在查询设计器中选择now
并运行它时,它告诉你什么?你是正确的。
now
按原样工作。但是,
日期和
时间都不按原样工作。因此,我也一直在SQL中使用
now()
。我总是使用
日期和
日期()
在不需要时间的时候-就像这里。谢谢@Gustav。你的方法对我也很有效。谢谢谢谢hanks@Gustav。你的方法对我也很有效。谢谢