为什么要检查SQL Server中的日期是否小于0或小于1900年

时间:2018-06-19 17:55:21

标签: sql-server-2008 tsql

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

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

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

1 个答案:

答案 0 :(得分:0)

仅需查看实际操作即可。日期0等于1900-01-01

SQL DEMO

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

输出

enter image description here