mysql - 如何使用日期范围过滤 mysql 查询

标签 mysql date coldfusion

我有一个接受这种格式的日期的数据库表:5/15/2017 现在,当我查询表时:

SELECT *
FROM table
WHERE 1 = 1

有一个表单字段,其中包含用于过滤查询的日期。字段值将始终采用这种格式:例如 Today = 5/15/2017 - 5/15/2017, lastmonth = 4/1/2017 - 4/31/2017form.date 由两个由 - 分隔的日期组成,即月、日和年。

现在我想给查询添加一个条件。如果定义了表单,则按日期过滤它。所以它会是这样的:

<cfquery datasource="xx" name="ys">
    SELECT *
    FROM table
    WHERE 1 = 1
    <cfif isdefined ("form.date") and form.date neq "">
    AND date = '#form.date#'
    </cfif>
</cfquery>

我知道 cfif 中的语句是错误的,但是我怎样才能使日期搜索数据库中跨越 form.date 值的行?

最佳答案

在提交查询之前执行您的逻辑。像这样:

queryStartDateString = trim(listFirst(form.date, '-')); 
queryEndDateString = trim(listLast(form.date, '-'));
queryStartDate = parseDateTime(queryStartDateString, 'm/d/yyyy');
queryEndDate = parseDateTime(queryEndDateString, 'm/d/yyyy');
queryEndDate = dateAdd('d', 1, queryEndDate);

然后在您的查询中:

where to_date_column >= <cfqueryparam value = "#queryStartDate#" cfsqltype="cf_sql_date">
and from_date_column < <cfqueryparam value = "#queryEndDate#" cfsqltype="cf_sql_date">

关于mysql - 如何使用日期范围过滤 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43980958/

相关文章:

mysql - 使用docker进行单元测试

java - 在 JAVA 中获取给定日期范围(DateX 和 DateY)之间的所有星期一和星期四日期将是一个很好的实现

sql - 每天列中两个日期之间的数据

android - Android 中的日期选择器

sql-server-2008 - ColdFusion 查询连接

python - Python 虚拟环境中没有名为 MySqlDb 的模块

mysql - 使用sql联合子查询的组合来处理AND/OR条件的组合以进行客户过滤

php - 不能在写入上下文中使用方法返回值;不知道从这里去哪里

javascript - 使用通用参数的 AJAX 调用始终提供 readState = 1

Oracle 19c 连接到 ColdFusion 2018