sql - 使用参数时访问带有日期 BETWEEN 中断的查询
问题描述
我在访问中有一个 SQL 查询,它将获取计算日期在两个值之间的所有记录。如果我对日期文字进行硬编码,例如:
SELECT *
FROM Table
WHERE DateAdd("d",-60,DateAdd("yyyy",65,[Table].[BirthDate])) Between #3/21/2021# And #3/27/2021#;
但是,我需要对日期之间的日期进行参数化,以便用户可以输入它们,例如:
SELECT *
FROM Table
WHERE DateAdd("d",-60,DateAdd("yyyy",65,[Table].[BirthDate])) Between [StartDate] And [EndDate];
但是,当我运行后一个查询并输入与前一个硬编码的完全相同的日期时,它开始将记录拉出介于范围之间。我试图输入日期3/21/2021
和日期文字#3/21/2021#
,但都不起作用。后者根本不拉任何东西。
我还有一个表单,其中包含一些使用短日期格式的文本框,让用户可以选择查询的日期。它有同样的问题,即撤回不正确的记录。据我所知,这些记录都没有任何时间成分。
如何获得正确使用用户输入参数的日期?
解决方案
Access 不知道您的参数是什么数据类型,因此请在查询中指定:
PARAMETERS
StartDate DateTime,
EndDate DateTime;
SELECT
*
FROM
Table
WHERE
DateAdd("d",-60,DateAdd("yyyy",65,[Table].[BirthDate])) Between [StartDate] And [EndDate];
推荐阅读
- c++ - 在纹理中存储浮点数组并使用纹理坐标从着色器访问浮点数
- r - 在ggplot中覆盖来自不同数据框的图而不弄乱图例
- c# - DDD 从外部 API、存储库和域服务构造 AggregateRoot 实体
- mongodb - Mongo DB 根据关键字段查找具有最高值的所有记录
- sorting - 如果两个文档的排序值相同,那么 Elasticsearch 中的文档如何排序?
- events - 在 Google 表格保存操作上触发 PubSub 消息
- java - 如何使用 Spring Boot Rest Controller 返回 JSONArray?
- c# - 如何取消 N 个任务中的一个特定任务?
- java - 使用 FileProvider 处理 XML 文件的数据
- python - 在包含数字和对象的数组上使用 NumPy 函数