Bhe*_*ung 11 sql oracle compare date datepart
我试图通过以下查询获取最近30天的计数 -
SELECT date_occured, COUNT(*) FROM problem
WHERE date_occured >= (CURRENT_DATE - 30)
GROUP BY date_occured;
//date_occured field is of type DATE.
Run Code Online (Sandbox Code Playgroud)
基本上,在我的查询中,我试图只比较条件中的日期部分date_occured >= (CURRENT_DATE - 30)
,但它似乎也比较时间.
我试过TRUNC如下 -
TRUNC(date_occured) >= TRUNC(CURRENT_DATE - 30)
Run Code Online (Sandbox Code Playgroud)
但是当运行查询时它永远不会返回.
我也尝试过 -
SELECT date_occured, COUNT(*) FROM problem
GROUP BY date_occured
HAVING TRUNC(date_occured) >= TRUNC(CURRENT_DATE - 30);
Run Code Online (Sandbox Code Playgroud)
它永远不会回来.
如何只比较Oracle中两个DATE值的日期部分?
Ton*_*ews 15
对于这种情况,您只需要TRUNC右侧:
WHERE date_occured >= TRUNC(CURRENT_DATE - 30)
Run Code Online (Sandbox Code Playgroud)
为什么?因为如果TRUNC(date_occured)晚于TRUNC(CURRENT_DATE - 30),那么TRUNC(date_occured)之后的任何时刻也必然晚于TRUNC(CURRENT_DATE - 30).
date_occured> = TRUNC(date_occured)显然总是如此(考虑一下).
逻辑说如果A> = B且B> = C,则A> = C
现在代替: