如何在MSSQL中选择日期

时间:2017-11-06 12:01:32

标签: sql sql-server

我正在尝试编写一个查询,如果日期时间列(fromdate)为null或fromdate在当前日期之前,则可以返回结果。这是我的疑问:

select * from patients where from date =null OR from date  <= cast(cast(getdate() as date)as datetime)

但此查询返回空结果。有人可以确认我在查询当前日期检查有效之前是否检查空值?

---------在多于1列上应用过滤器:-----------

SELECT *
FROM patients
WHERE(fromDate = NULL
      OR t1.fromDate <= CONVERT(DATE, GETDATE()))
     AND (t1.toDate = NULL
          OR t1.toDate >= CONVERT(DATE, GETDATE()));

我在表中的todate中有一个空列但是像这样应用给我空结果

3 个答案:

答案 0 :(得分:2)

这对你有用

SELECT *
FROM patients
WHERE fromdate IS NULL
      OR fromdate <= CONVERT(DATE, GETDATE());

答案 1 :(得分:1)

你会这样做:

select p.*
from patients p
where p.fromdate is null or p.fromdate <= cast(getdate() as date);

注意:

  • 根据您的问题,fromdate中没有空格。
  • NULL的正确比较为IS NULL,而不是= NULL
  • 无需将date投回datetime进行比较。

答案 2 :(得分:1)

试试这个:

select * from patients where [fromdate] is null OR [fromdate]  <= cast(getdate() as datetime)