[英]Oracle SQL Where Clause against a date column
我有一个带有日期的DATE列,但我需要查询它以查找少于30天的记录。
START_DATE
----------
01-AUG-2010
09-AUG-2010
22-AUG-2010
09-SEP-2010
查询:
SELECT START_DATE
WHERE START_DATE < 30;
我知道这是ORACLE SQL中的简单查询,但我做错了什么。
采用:
SELECT t.start_date
FROM YOUR_TABLE t
WHERE t.start_date > SYSDATE - 30
SYSDATE
是Oracle的语法,用于获取当前日期和时间 如果要基于截至午夜的30天评估日期,请使用TRUNC函数 :
SELECT t.start_date
FROM YOUR_TABLE t
WHERE t.start_date > TRUNC(SYSDATE) - 30
不要在列上运行TRUNC-这将使列上的索引无用,从而确保表扫描。
SELECT t.start_date
FROM YOUR_TABLE t
WHERE t.start_date > SYSDATE - INTERVAL '30' DAY;
INTERVAL
比假定你可以加上或减去天,虽然我已经注意到了一些细微的差别更便携的INTERVAL
Oracle和PostgreSQL之间的语法。
START_DATE> SYSDATE-1
也许
TRIM(STARTDATE)> TRIM(SYSDATE)-1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.