gpt4 book ai didi

sql - Where 子句中的 Oracle DateTime?

转载 作者:行者123 更新时间:2023-12-03 05:16:38 25 4
gpt4 key购买 nike

我有这样的sql:

SELECT EMP_NAME, DEPT
FROM EMPLOYEE
WHERE TIME_CREATED >= TO_DATE('26/JAN/2011','dd/mon/yyyy')

-> 这将返回 10 行并且 TIME_CREATED = '26-JAN-2011'

现在,当我这样做时,我没有收到任何行,

SELECT EMP_NAME, DEPT
FROM EMPLOYEE
WHERE TIME_CREATED = TO_DATE('26/JAN/2011','dd/mon/yyyy')

-> 取大于取

有什么理由吗?

最佳答案

是:TIME_CREATED 包含日期和时间。使用 TRUNC 去除时间:

SELECT EMP_NAME, DEPT
FROM EMPLOYEE
WHERE TRUNC(TIME_CREATED) = TO_DATE('26/JAN/2011','dd/mon/yyyy')

更新:
正如 Dave Costa 在下面的评论中指出的那样,这将阻止 Oracle 使用 TIME_CREATED 列的索引(如果存在)。没有此问题的替代方法是:

SELECT EMP_NAME, DEPT
FROM EMPLOYEE
WHERE TIME_CREATED >= TO_DATE('26/JAN/2011','dd/mon/yyyy')
AND TIME_CREATED < TO_DATE('26/JAN/2011','dd/mon/yyyy') + 1

关于sql - Where 子句中的 Oracle DateTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6749369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com