首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用空比较日期

用空比较日期
EN

Stack Overflow用户
提问于 2018-04-04 17:43:11
回答 5查看 92关注 0票数 2

我有下面的桌子。

代码语言:javascript
复制
ID     StateDate       EndDate
 1     01/01/2018     01/30/2018
 2     02/15/2018     02/01/2018
 3     02/01/2018  

我需要比较日期,下面的SQL。

代码语言:javascript
复制
select *
from tablea a
where 1=1
  and a.startDate<= EndDate

预期成果:

代码语言:javascript
复制
ID     StateDate       EndDate
 1     01/01/2018     01/30/2018
 3     02/01/2018 

我怎么能无视诺尔斯?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-04-04 17:48:16

如果endDate为null,则可以分配一个高日期值,条件仍然为真。见下文:

代码语言:javascript
复制
select *
from tablea a
where 1=1
  and a.startDate<= coalesce(EndDate,TO_DATE('12/31/9999', 'MM/DD/YYYY') )
票数 0
EN

Stack Overflow用户

发布于 2018-04-04 17:46:38

Null不是一个值,而是缺少它。将它与任何期望值的操作符(如<= )一起使用,都将返回null (即“未知”),这不是真,因此该行不会被返回。

您可以使用is操作符显式地检查它:

代码语言:javascript
复制
SELECT *
FROM   tablea a
WHERE  startDate <= endDate OR (startDate IS NOT NULL AND endDate IS NULL)
票数 2
EN

Stack Overflow用户

发布于 2018-04-04 17:46:05

可以将OR关键字添加到where子句中,如下所示:

代码语言:javascript
复制
select *
from table a
where (a.startDate<= EndDate) 
OR (a.StartDate is not null and a.EndDate is null)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49657267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档