sql - Access - 检查月份和年份是否在日期范围内

标签 sql ms-access vba

我的数据库中有一个包含日期的表(字段“开始”和“结束”):

 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/

相关文章:

mysql - 数据库 : Migrate data between MS Access DB and MYSQL

python - 在 Mac 上将 MDB 文件导入 Python (pandas)

vba - ExcelVBA - 通过 MSXML2.XMLHTTP 的 HttpReq - 加载页面后获取页面

sql - Oracle SQL 查询根据值是否存在返回 1 或 0

sql - MySql View 是否动态且高效?

MySQL errno 150 尚未解决

ms-access - Microsoft Access 中的 Scope_Identity()

excel - 检查word文件是否已经打开vba

vba - Excel VBA 查找并替换数字前的所有字符

mysql - 查询在 MySQL 中返回一行