where子句中的Sysdate在oracle sql中不起作用

where子句中的Sysdate在oracle sql中不起作用,sql,oracle,date,select,Sql,Oracle,Date,Select,我在下面选择了一个查询,我试图只获取今天日期的数据,但不返回任何内容: select * from V_TER where SYSTEM_INSERTED_AT = SYSDATE; SYSTEM\u INSERTED\u DATE属于DATE数据类型,值存储在该字段中,例如2021-01-15 15:17:13Oracle中的问题是日期在数据和sysdate本身中都有时间组件 我建议在当前日期的任何时间检查: where system_inserted_at >= trunc(sysd

我在下面选择了一个查询,我试图只获取今天日期的数据,但不返回任何内容:

select * from V_TER
where SYSTEM_INSERTED_AT = SYSDATE;

SYSTEM\u INSERTED\u DATE
属于
DATE
数据类型,值存储在该字段中,例如
2021-01-15 15:17:13
Oracle中的问题是日期在数据和
sysdate
本身中都有时间组件

我建议在当前日期的任何时间检查:

where system_inserted_at >= trunc(sysdate) and
      system_inserted_at < trunc(sysdate) + interval '1' day

Oracle中的问题是,日期在数据和
sysdate
本身中都有时间组件

我建议在当前日期的任何时间检查:

where system_inserted_at >= trunc(sysdate) and
      system_inserted_at < trunc(sysdate) + interval '1' day
感谢trunc(系统插入时间)=trunc(系统日期)适用于me@Symonds它将“起作用”,但如果您在列的
系统中插入了一个索引,那么如果您截断该列(您将需要一个基于函数的索引),Oracle将无法使用它,但如果您在一个日期范围内进行比较(而不截断该列),它可以使用它。感谢trunc(系统插入位置)=trunc(系统日期)适用于me@Symonds它将“起作用”,但如果您在
列的系统中插入了一个索引,那么如果您截断该列(您将需要一个基于函数的索引),Oracle将无法使用它,但如果您在一系列日期上进行比较,它可以使用它(不截断列)。