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

SQL Server中用T-SQL排除日期为周日且单元格值为0或空的行的方法

T-SQL 实现SQL Server排除指定双条件匹配行

实现核心:你需要在WHERE子句中对*「周日+值为0/NULL」的组合条件*取反,即可仅排除同时满足两个要求的行,其他所有数据都会保留。

注意事项

  • SQL Server中周计算规则受DATEFIRST配置影响,默认DATEFIRST=7时周日对应的DATEPART(WEEKDAY, 日期字段)返回值为1,如果你的实例配置不同可先调整会话级DATEFIRST保证判断准确。
  • 也可以用DATENAME函数直接匹配星期名称,避免配置差异影响,中文环境下匹配值为「星期日」,英文环境下为「Sunday」。

代码示例

写法1:DATEPART实现(需保证周首日配置)

-- 可选:会话级设置周首日为周日,确保判断准确
SET DATEFIRST 7;

SELECT * 
FROM 你的表名
WHERE NOT (
    DATEPART(WEEKDAY, 你的日期字段名) = 1
    AND (你的数值字段名 = 0 OR 你的数值字段名 IS NULL)
);

写法2:DATENAME实现(无配置依赖,英文环境)

SELECT * 
FROM 你的表名
WHERE NOT (
    DATENAME(WEEKDAY, 你的日期字段名) = 'Sunday'
    AND (你的数值字段名 = 0 OR 你的数值字段名 IS NULL)
);

写法3:DATENAME实现(无配置依赖,中文环境)

SELECT * 
FROM 你的表名
WHERE NOT (
    DATENAME(WEEKDAY, 你的日期字段名) = '星期日'
    AND (你的数值字段名 = 0 OR 你的数值字段名 IS NULL)
);

上述查询的过滤逻辑等价于「不是周日的行全部保留+是周日但数值不为0也不为NULL的行保留」,完全符合不删除全部周日数据、仅排除同时满足两个条件行的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:06:04