我需要帮助来解决“非有效月份”问题。语句和查询下方与MAX函数完美配合..
SELECT MAX( Y.FILE_SUB_RET_DATE_TIME ) FROM ADPDBA.WORK_REQUEST_FILE_TRANS_AUDIT Y WHERE Y.FILE_EVENT_TYPE = 'SUBMISSION' AND
Y.FILE_SUBMT_RETRL_STATUS = 'LEVEL1 POSTED' AND Y.FILE_SUB_RET_DATE_TIME >= '01-DEC-2015' AND Y.FILE_SUB_RET_DATE_TIME <= '03-FEB-2017'
GROUP BY Y.WR_FILE_TRANS_INFO_ID
输出如下......
12/11/2015 1:44:33 PM
2/2/2017 3:42:02 PM
2/2/2017 3:42:02 PM
现在我需要重写没有MAX功能的查询,这些是我在下面准备的查询。但两者都显示“不是有效的月份”。声明..
SELECT X.WR_FILE_TRANS_AUDIT_ID FROM ADPDBA.WORK_REQUEST_FILE_TRANS_AUDIT X WHERE X.FILE_SUB_RET_DATE_TIME IN
('20170202034202','20170202034202','20151211014433')
SELECT X.WR_FILE_TRANS_AUDIT_ID FROM ADPDBA.WORK_REQUEST_FILE_TRANS_AUDIT X WHERE X.FILE_SUB_RET_DATE_TIME IN
('2017-02-02 03:42:02.0','2017-02-02 03:42:02.0','2015-12-11 01:44:33.0')
请帮我摆脱这个错误...
答案 0 :(得分:1)
我认为您的问题是您的日期格式。对于日期列,Oracle将尝试根据NLS默认设置转换为日期。对于您的SQL,让我们更具体一点,并告诉Oracle如何解释日期字符串,如...
(假设为DATE数据类型)
SELECT X.WR_FILE_TRANS_AUDIT_ID
FROM ADPDBA.WORK_REQUEST_FILE_TRANS_AUDIT X
WHERE X.FILE_SUB_RET_DATE_TIME IN
(TO_DATE('2017-02-02 03:42:02', 'YYYY-MM-DD HH24:MI:SS'),
TO_DATE('2017-02-02 03:42:02', 'YYYY-MM-DD HH24:MI:SS'),
TO_DATE('2015-12-11 01:44:33', 'YYYY-MM-DD HH24:MI:SS')
);
..或者我刚看到你对TIMESTAMP专栏的评论
SELECT X.WR_FILE_TRANS_AUDIT_ID
FROM ADPDBA.WORK_REQUEST_FILE_TRANS_AUDIT X
WHERE X.FILE_SUB_RET_DATE_TIME IN
(TO_TIMESTAMP ('2017-02-02 03:42:02', 'YYYY-MM-DD HH24:MI:SS'),
TO_TIMESTAMP ('2017-02-02 03:42:02', 'YYYY-MM-DD HH24:MI:SS'),
TO_TIMESTAMP ('2015-12-11 01:44:33', 'YYYY-MM-DD HH24:MI:SS')
);