oracle上的日期函数

gum*_*mpi 1 oracle date-arithmetic sql-date-functions

我在oracle上有关于日期函数的问题.

我有下表

statistic_table(
   pages AS varchar(10),
   date_created AS date
);
Run Code Online (Sandbox Code Playgroud)

我有以下sql

SELECT COUNT(*) FROM statistic_table WHERE date_created BETWEEN sysdate-5 AND sysdate-1
and
SELECT COUNT(*) FROM statistic_table WHERE date_created BETWEEN to_date('12-AUG-2011') AND to_date('16-AUG-2011');
Run Code Online (Sandbox Code Playgroud)

问题是,为什么它会返回不同的数字.假设sysdate-5返回12-aug-2011并且sysdate-1返回16-aug-2011

任何帮助将非常感激!

干杯,

Ste*_*ieG 5

sysdate - 5将为您提供当前时间的日期.因此,如果我在下午1点准确地运行它,查询将等同于:

select (*) 
FROM statistic_table 
WHERE date_created BETWEEN to_date('12-Aug-2011 13:00:00') 
                       AND to_date('16-Aug-2011 13:00:00')
Run Code Online (Sandbox Code Playgroud)

而第二个查询是:

select (*) 
FROM statistic_table 
WHERE date_created BETWEEN to_date('12-Aug-2011 00:00:00') 
                       AND to_date('16-Aug-2011 00:00:00')
Run Code Online (Sandbox Code Playgroud)

你应该尝试这样做:

select (*) 
FROM statistic_table 
WHERE date_created BETWEEN trunc(sysdate) -5 
                       AND trunc(sysdate) -1
Run Code Online (Sandbox Code Playgroud)