我正试图在SYSDATE和SYSDATE - 300之间得到一个约会。
SELECT date_entered
FROM customer_order_join
WHERE TO_CHAR(date_entered, 'YYYYMMDD') BETWEEN
TO_DATE(sysdate, 'YYYYMMDD') AND TO_DATE(sysdate, 'YYYYMMDD') - 300我得到了以下错误:
ORA-01858__:在需要数字的地方找到一个非数字字符。
发布于 2021-12-13 07:00:12
where子句中有一些奇怪的日期转换:
(
所以也许只是:
SELECT DATE_ENTERED FROM CUSTOMER_ORDER_JOIN
WHERE TRUNC(DATE_ENTERED) Between TRUNC(SYSDATE - 300) AND TRUNC(SYSDATE); 发布于 2021-12-13 07:05:51
SYSDATE返回一个DATE值。永远不要对已经是TO_DATE()的值运行DATE。除此之外,BETWEEN ... AND还要求首先使用较低的日期。
您可以直接比较DATE值,我猜您正在查找以下内容:
SELECT DATE_ENTERED
FROM CUSTOMER_ORDER_JOIN
WHERE DATE_ENTERED Between SYSDATE-300 AND SYSDATE很可能您喜欢只比较日期值,而不是时间值。然后你可以用这个:
SELECT DATE_ENTERED
FROM CUSTOMER_ORDER_JOIN
WHERE TRUNC(DATE_ENTERED) Between TRUNC(SYSDATE-300) AND TRUNC(SYSDATE) -- or TRUNC(SYSDATE)+1 to cover full day注意,除非在DATE_ENTERED上有基于函数的索引,否则查询不会利用TRUNC(DATE_ENTERED)上的索引。所以你可能更喜欢
SELECT DATE_ENTERED
FROM CUSTOMER_ORDER_JOIN
WHERE DATE_ENTERED >= TRUNC(SYSDATE-300)
AND DATE_ENTERED < TRUNC(SYSDATE)https://stackoverflow.com/questions/70330800
复制相似问题