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

如何在SQL中使用变量按指定日期查询记录

解决按日期变量查询datetime类型记录的问题

你当前的代码直接用Estt_Date=@estDate查不到数据,核心原因是datetime类型包含年月日时分秒毫秒,只有当Estt_Date和@estDate的时间部分完全一致时才会匹配,但实际场景中我们通常需要查询某一天的所有记录,忽略时分秒。下面提供两种实用解决方案:

方案1:转换日期类型匹配(简单直观)

将Estt_Date转换为DATE类型(仅保留年月日),再与变量的日期值比较:

-- 定义日期变量,指定要查询的目标日期
DECLARE @estDate DATE
SET @estDate = '2023-01-31'

-- 查询该日期的所有记录
SELECT Meta FROM T_TData WHERE CAST(Estt_Date AS DATE) = @estDate

方案2:日期范围查询(性能更优)

通过指定目标日期的起始和结束时间范围来查询,这种方式能利用Estt_Date字段的索引,适合数据量较大的场景:

-- 定义目标日期的起始、结束时间
DECLARE @estStartDate DATETIME
DECLARE @estEndDate DATETIME
SET @estStartDate = '2023-01-31 00:00:00.000' -- 目标日期的0点
SET @estEndDate = DATEADD(DAY, 1, @estStartDate) -- 目标日期的次日0点

-- 范围查询:>=起始时间 且 <结束时间
SELECT Meta FROM T_TData WHERE Estt_Date >= @estStartDate AND Estt_Date < @estEndDate

如果要查询当前日期的记录

可以动态生成当天的时间范围:

DECLARE @estStartDate DATETIME
DECLARE @estEndDate DATETIME
SET @estStartDate = CAST(GETDATE() AS DATE) -- 自动转换为当天0点
SET @estEndDate = DATEADD(DAY, 1, @estStartDate)

SELECT Meta FROM T_TData WHERE Estt_Date >= @estStartDate AND Estt_Date < @estEndDate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:21:03