Oracle获得前一天的记录

Phi*_*ord 12 oracle datetime

好吧我想我上一年而不是前一天,但我需要前一天.

SELECT TO_DATE(TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD'),'YYYY-MM-DD') - 1 FROM Dual
Run Code Online (Sandbox Code Playgroud)

我将它与此格式的日期时间戳进行比较,并希望获得前一天的所有行.

YYYY-MM-DD HH:MM:SS
Run Code Online (Sandbox Code Playgroud)

所以我正在尝试这样的事情

SELECT field,datetime_field 
FROM database
WHERE datetime_field > TO_DATE(TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD'),'YYYY-MM-DD') - 1
Run Code Online (Sandbox Code Playgroud)

Eri*_*der 29

sysdate怎么样?

SELECT field,datetime_field 
FROM database
WHERE datetime_field > (sysdate-1)
Run Code Online (Sandbox Code Playgroud)

  • TRUNC(SYSDATE-1) (3认同)

Ron*_*nis 5

您可以使用删除日期的时间部分TRUNC

select field,datetime_field 
  from database
 where datetime_field >= trunc(sysdate-1,'DD');
Run Code Online (Sandbox Code Playgroud)

该查询将为您提供日期从昨天开始的所有行。请注意的第二个参数trunc()。您可以使用它来截断日期的任何部分。

如果您的datetime_fied包含'2011-05-04 08:23:54',则将返回以下日期

trunc(datetime_field, 'HH24') => 2011-05-04 08:00:00
trunc(datetime_field, 'DD')   => 2011-05-04 00:00:00
trunc(datetime_field, 'MM')   => 2011-05-01 00:00:00
trunc(datetime_field, 'YYYY') => 2011-00-01 00:00:00
Run Code Online (Sandbox Code Playgroud)