【发布时间】:2018-10-23 02:32:07
【问题描述】:
我正在寻求有关 Oracle SQL 的帮助。我需要在 where 子句中查询日期和时间,以根据当前日期查找班次数据。有 3 个班次,早上 5 点到下午 1 点,下午 1 点到晚上 9 点,晚上 9 点到早上 5 点(第二天早上。例如
SELECT 'T1' AS SHIFT, WORK_CENTER, SUM(CASE WHEN AQL='PASS' THEN 1 ELSE 0) END AS AQL_PASSED
FROM Z_INSPECTION_DEFECTS
WHERE DATE_TIME >= TO_DATE((SELECT CONCAT(TO_CHAR(CURRENT_DATE, ''DD-MON-YYYY''), '' 5:00:00 '') FROM DUAL) , ''DD-MON-YYYY HH:MI:SS '') AND
DATE_TIME < TO_DATE((SELECT CONCAT(TO_CHAR(CURRENT_DATE, ''DD-MON-YYYY''), '' 1:00:00 '') FROM DUAL) , ''DD-MON-YYYY HH:MI:SS '')
我没有从这个查询中得到任何结果。日期时间字段是洛杉矶当地时间的时间戳。
【问题讨论】:
-
您的查询混合了单字、双字和转义的单字,这有点令人困惑。您不需要来自双重的内部选择。会话时区是否也是 LA(因为您使用的是
current_date而不是sysdate)? -
没有会话时区是UTC。 date_time 字段已转换为洛杉矶时区,这就是我使用 Current_Date 的原因。
标签: sql oracle date oracle-sqldeveloper