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

SQL Server中为DATE类型变量@DATA按逻辑赋值遇问题,求正确写法

解决SQL Server变量赋值问题

你的代码问题出在SET @DATA后未指定赋值内容,且分支里用SELECT仅返回结果,没有将值存入变量。以下是两种修正方案:

方案一:IF ELSE直接赋值

DECLARE @DATA DATE

IF (DATEPART(DW, GETDATE()) - 1) = 1
    SET @DATA = CAST(GETDATE() - 3 AS DATE)
ELSE
    SET @DATA = CAST(GETDATE() - 1 AS DATE)

-- 后续查询可直接使用@DATA,比如:
-- SELECT * FROM YourTable WHERE YourDateColumn = @DATA

方案二:用CASE表达式简化写法(更简洁)

-- 方式1:先声明再赋值
DECLARE @DATA DATE
SET @DATA = CASE 
    WHEN DATEPART(DW, GETDATE()) - 1 = 1 THEN CAST(GETDATE() - 3 AS DATE)
    ELSE CAST(GETDATE() - 1 AS DATE)
END

-- 方式2:声明时直接赋值
DECLARE @DATA DATE = CASE 
    WHEN DATEPART(DW, GETDATE()) - 1 = 1 THEN CAST(GETDATE() - 3 AS DATE)
    ELSE CAST(GETDATE() - 1 AS DATE)
END

注意:DATEPART(DW, GETDATE())的返回值依赖SQL Server的DATEFIRST配置(默认周日为1),若你的环境DATEFIRST不是默认值,需调整判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:55:15