我的数据库中有一个包含日期的表(字段“开始”和“结束”):
Name | Start | End |
John | 2014-06-30 | 2014-10-31 |
Tom | 2014-01-21 | 2014-05-31 |
Steve | 2012-03-07 | 2014-11-03 |
Hana | 2013-06-30 | 2014-05-01 |
现在我想查找所有记录,例如2013 年 6 月:
预期结果:
Name | Start | End |
Steve | 2012-03-07 | 2014-11-03 |
Hana | 2013-06-30 | 2014-05-01 |
所以我需要检查月份和年份(例如 2013 年 6 月)是否位于“开始”和“结束”字段中的日期之间。
有什么想法吗?
预先感谢您的帮助!
最佳答案
将开始日期和结束日期转换为 yyyymm
时出现的问题整数并在 WHERE 子句中使用这些值,查询将不会是 sargable并且始终需要表扫描,即使相应的日期列已建立索引。另一方面,
... WHERE [Start] < DateSerial([searchYear],[searchMonth]+1,1)
AND [End] >= DateSerial([searchYear],[searchMonth],1)
生成可控制查询。
关于sql - Access - 检查月份和年份是否在日期范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28137849/