You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询指定日期是否处于表中from_date和to_date两个不同列的区间范围内

错误原因分析

你编写的SQL无法运行的核心问题是BETWEEN运算符后需要接两个同类型的可比较值,你填入的(from_date = "2021-08-26")是布尔判断表达式,返回结果为true/false,无法和日期类型的常量做比较,因此会触发语法错误或逻辑错误。另外SQL规范中日期常量建议使用单引号包裹,双引号在多数数据库中用于标识表名、列名等标识符,混用也可能导致报错。

可行实现方案

方案1:基础比较运算符写法(全数据库兼容)

直接通过两个不等式分别判断待查日期大于等于起始日期、小于等于结束日期即可,所有主流数据库都支持该写法:

SELECT * FROM LeaveApplication
WHERE from_date <= '2021-08-27' 
  AND to_date >= '2021-08-27';

如果你的from_date/to_date字段包含时分秒,需要判断到当日结束的话,可以调整为:

SELECT * FROM LeaveApplication
WHERE from_date <= '2021-08-27 23:59:59'
  AND to_date >= '2021-08-27 00:00:00';

方案2:BETWEEN 简化写法

BETWEEN本身支持左侧放待比较值,右侧放两个字段名,语法更简洁,MySQL、PostgreSQL、SQL Server等主流数据库均支持:

SELECT * FROM LeaveApplication
WHERE '2021-08-27' BETWEEN from_date AND to_date;

该写法和方案1的逻辑完全等价,默认是左闭右闭区间,即同时满足>= from_date和<= to_date。


内容的提问来源于stack exchange,提问作者Eaten Taik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:15:04