【发布时间】:2019-03-05 14:37:55
【问题描述】:
我正在尝试挑选时间范围内的所有可用记录。
我需要从 TABLE2 中获取时间戳,并让 TABLE1 中的所有记录在该时间和当前时间之间都可用。
SELECT COUNT(*)
FROM TABLE1
WHERE STATUS = 'COMPLETED'
AND LAST_UPDATE_USER = 'myID'
AND LAST_UPDATE_DT BETWEEN
TO_DATE((
SELECT /*+PARALLEL(16)*/ SIGN_IN_DT
FROM TABLE2
WHERE ID = 'myID'
AND SIGNED_SCREEN = 'screen1'
AND SIGN_OFF_DT IS NULL),
'dd-mon-yyyy hh24:mi:ss.ff')
AND SYSDATE;
两个表格中的日期格式 = 05-MAR-19 07.47.26.769934000 PM
我得到了例外:
ORA-01821:日期格式无法识别
请帮忙。
【问题讨论】:
-
两列的数据类型是什么?
-
时间戳数据类型。
-
为什么要对已经是
DATE(或TIMESTAMP)的值执行TO_DATE(...)?跳过TO_DATE(... -
不要尝试将 DATE(或 TIMESTAMP)数据类型中已有的内容转换为 DATE(或 TIMESTAMP。您有两个 TIMESTAMP 列,因此只需按原样进行比较!
-
您的子查询必须只返回 1 行。在这种情况下,
/*+PARALLEL(16)*/似乎没什么用。
标签: oracle