首页 > 解决方案 > 为什么我要检查 SQL Server 中的日期是否小于 0 或小于 1900 年

问题描述

我正在从其他人的代码中重用我的查询中的逻辑。在冗长且高度不可读的 where 语句中,有几个实例会比较并检查日期字段以查看它们是否小于零。

IE

YEAR(bp.dtGoalDate) <= 1900
    AND (po.GoalDate IS NULL OR  po.GoalDate < 0)

dtGoalDate 和 GoalDate 是我们数据库中的日期/时间列。这是我不理解并且完全正常的事情,还是写得不好并且需要清理?

标签: sql-server-2008tsql

解决方案


只是为了看到它的行动。日期 0 等于1900-01-01

SQL 演示

create table t1 (
    t datetime
)    

insert into t1 values ('2018-01-01');
insert into t1 values (0);
insert into t1 values ('1800-01-01');

SELECT * FROM t1 WHERE t <= 0

输出

在此处输入图像描述


推荐阅读