我需要使用SYSDATE将日期与当前日期进行比较,如下所示:
spec.js
但是,这没有结果。...我的问题:
基于公认的答案here,我们永远不要将字符串与日期进行比较。但另一方面,SYSDATE已准备好为Date数据类型,我们不应将其与日期-see here进行比较。
如果我在上层SQL中将 TO_DATE 替换为 TO_CHAR ,则一切将恢复正常。但是 TO_CHAR 函数会转换为String,因此Oracle(我要说)需要再次将该字符串转换为日期,以便您强制Oracle进行隐式数据类型转换。
那么,为了避免Oracle工作缓慢,应该与date和SYSDATE进行正确的比较?
答案 0 :(得分:1)
您无需致电TO_DATE
或TO_CHAR
:
SELECT *
FROM my_table
WHERE date_column >= TRUNC(SYSDATE - 3) AND date_column < TRUNC(SYSDATE + 1);
假设date_column
是一种日期类型,您应该可以将其直接与SYSDATE
或SYSDATE
进行一定天数比较。