繁体   English   中英

Oracle SQL Where条款对日期列

[英]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的语法,用于获取当前日期和时间
  • 在Oracle中,您可以在天的上下文中进行日期算术,因此SYSDATE-30表示“当前日期,减去三十天”以获取过去三十天的日期

如果要基于截至午夜的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM