当日期格式不正确时,如何在SQL中查询今天的日期

时间:2018-08-01 23:22:00

标签: sql database date

我有一台将日志生成到数据库中的设备。

我需要查询数据库

  1. 查询1 =给我表01中TODAY的所有记录和列

  2. Query2 =给我表01中YESTERDAY的所有记录和列

我遇到的问题是日期字段的格式不完全是一种很好的mm-dd-yyyy格式。

字段是:

datetime, device, controlnumber, result

datetime字段输出的数据看起来像这样yyyy-mm-ddTHH:MM:SS(不确定为什么会有T,只是可能只是简单地说这是时间):

2018-07-16T13:34:00
2018-07-16T18:15:00
2018-07-16T18:33:00
2018-07-16T18:50:00
2018-07-16T19:02:00

谁能快速帮助我(我知道这是不对的):

select * from table01
where datetime = Today()
and datetime = Yesterday()
Order by controlnumber

2 个答案:

答案 0 :(得分:1)

在标准SQL中,您今天需要这样做:

select t.*
from table01 t
where t.datetime >= current_date and
      t.datetime < current_date + interval '1 day'
Order by controlnumber;

昨天类似:

select t.*
from table01 t
where t.datetime >= current_date - interval '1 day' and
      t.datetime < current_date 
Order by controlnumber;

仅因为这是标准SQL,并不意味着所有数据库都支持它。但是,尽管语法可能会有所不同,但所有数据库都支持日期算术。

答案 1 :(得分:0)

我认为最简单的方法是使用DATEDIFF()函数,如下所示:

SELECT * FROM Ttable
WHERE DATEDIFF(day,Ttable.DatetimeColumn ,GETDATE()) = 0 -- For today

SELECT * FROM Ttable
WHERE DATEDIFF(day,Ttable.DatetimeColumn ,GETDATE()) = 1 -- For yesterday