这可能相当简单,但我只是不知道如何解决这个问题。
所以这是我正在做的一个简单的查询:
SELECT TO_CHAR(DATE,'DD-MM-YYYY') AS DATE, TO_CHAR(TIME,'HH24:MI') AS TIME,
CODEROOM, GROUP0, GROUP1, GROUP2, GROUP3,
FROM CONCERTS
WHERE DATE = '20-05-16' AND TIME = '00:00' AND CODEROOM = '1'
现在,如果我执行完全相同的查询并删除“AND TIME = '00:00'”,则一切正常,但如果我尝试搜索 TIME,则会引发以下错误:
01847. 00000 - "day of month must be between 1 and last day of month"
我知道我可以将时间和日期分组在同一列中,我尝试过,但也没有设法修复它。
我真的不知道如何解决这个问题,我知道这可能是因为 Oracle 中的日期存储日期和时间,尽管时间不错,但它可能有一个无效的日期,但如果是这样的话,错误执行查询时会被抛出,我什至无法执行它(我还检查了日期是否有效)
有什么办法可以解决这个问题吗?我一直在查找,但似乎找不到解决方案
提前非常感谢:)
最佳答案
首先,您可能首先需要更改列定义,以便获得有意义的名称,例如 CONCERT_DATE
或 CONCERT_TIME
其次,您需要在 where 子句上应用相同的 to_char 函数 嗯..
SELECT TO_CHAR(DATE,'DD-MM-YYYY') AS CONCERT_DATE, TO_CHAR(TIME,'HH24:MI') AS CONCERT_TIME,
CODEROOM, GROUP0, GROUP1, GROUP2, GROUP3,
FROM CONCERTS
WHERE TO_CHAR(DATE,'DD-MM-YYYY') = '20-05-2016'
AND TO_CHAR(TIME,'HH24:MI') = '00:00'
AND CODEROOM = '1'
关于mysql - 在 Oracle 中查找时间时为 "day of month must be between 1 and last day of month",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37466084/