You need to enable JavaScript to run this app. 如何编写SQL查询从datebegin和dateend两列筛选包含指定日期的记录
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SQL查询从datebegin和dateend两列筛选包含指定日期的记录

SQL日期区间查询实现方案

实现逻辑

要筛选指定日期落在datebegin和dateend区间内的记录,核心逻辑为:

  • 先把字符串格式的指定日期2013.01.20转换为SQL可识别的日期类型,避免字符串比较出现逻辑偏差
  • 筛选条件满足:指定日期 ≥ datebegin 且 指定日期 ≤ dateend

通用查询语句(以MySQL为例)

请将语句中的你的表名替换为实际业务中的表名:

-- 写法1:使用比较运算符,逻辑更直观
SELECT datebegin, dateend
FROM 你的表名
WHERE STR_TO_DATE('2013.01.20', '%Y.%m.%d') >= datebegin
  AND STR_TO_DATE('2013.01.20', '%Y.%m.%d') <= dateend;

也可以用BETWEEN简化写法,逻辑和上面完全等价:

-- 写法2:使用BETWEEN语法
SELECT datebegin, dateend
FROM 你的表名
WHERE STR_TO_DATE('2013.01.20', '%Y.%m.%d') BETWEEN datebegin AND dateend;

其他数据库适配

不同数据库的日期转换函数略有差异,按需替换即可:

  • SQL Server:将STR_TO_DATE('2013.01.20', '%Y.%m.%d')替换为CONVERT(DATE, '2013.01.20', 102)
  • PostgreSQL:将STR_TO_DATE('2013.01.20', '%Y.%m.%d')替换为TO_DATE('2013.01.20', 'YYYY.MM.DD')
  • Oracle:将STR_TO_DATE('2013.01.20', '%Y.%m.%d')替换为TO_DATE('2013.01.20', 'YYYY.MM.DD')

以上语句针对你提供的示例数据,会返回2013-01-19 | 2013-01-30的符合预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 09:36:03