모두 나는 저를 뒤적 거리며 많은 예제를 보았지만 아무 것도이를 해결하는 데 도움이되지 못합니다. 제가 근무하는 03:30:00에서 11:29:59와 같은 시간대가 있습니다 (예 : 근무 시간). 현재 시프트를 기반으로 마지막 시프트에 대한 데이터를 동적으로 쿼리하고 싶습니다. 예 : 현재 오전 11시 30 분부터 오후 7시 29 분 59 초 사이 인 경우 오전 3시 30 분부터 11시 30 분 사이의 마지막 교대를 원합니다.필드에서 시간 프레임을 선택하기 위해 현재 시간을 동적으로 사용하는 SQL 문 (Oracle)
이는 같을 것이다 경우 내 마음의 문 : 만약 시간 다음 .... 사이의 선택 시간 사이 ....
...와 .... 다음 선택 시간 사이 ELSEIF 시간나는 많은 조합을 시도하고 이것을 알아낼 수 없다. 나는 CASE와 어쩌면 서브 쿼리가 필요할 것이라고 생각 하나? 아니면 DECODE가 작동할까요?
SELECT CAST(ccd.DATEc AS TIME) as time_occured,
FROM db.datatb ccd
WHERE ccd.DATE > SYSDATE - interval '1440' minute
AND (
((TO_CHAR(SYSDATE, 'hh24:mi:ss')BETWEEN '03:30:00' AND '11:29:59' IN (SELECT
ccd.DATEc FROM db.datatb WHERE (CAST(ccd.DATEc AS TIME)NOT BETWEEN '03:30:00
AM' AND '07:29:59 PM')))
OR (TO_CHAR(SYSDATE, 'hh24:mi:ss')BETWEEN '11:30:00' AND '19:29:59' IN
(SELECT ccd.DATEc FROM db.datatb WHERE (CAST(ccd.DATEc AS TIME) BETWEEN
'03:30:00 AM' AND '11:29:59 AM')))
OR (TO_CHAR(SYSDATE, 'hh24:mi:ss')NOT BETWEEN '03:30:00' AND '19:29:59' IN
(SELECT ccd.DATEc FROM db.datatb WHERE (CAST(ccd.DATEc AS TIME) BETWEEN
'11:30:00 AM' AND '07:29:59 PM')))
)
오라클에는 'TIME' 데이터 유형이 없습니다. – MT0
데이터베이스의 예제 데이터가 많은 도움이됩니다. 날짜가 너무 많습니까, 아니면 시간 만 있습니까? 겹침 교대가 발생할 가능성이 있습니까 (03:30:00 - 11:30:00 vs 07:00:00 - 15:00:00? –
) 표의 데이터가 어떤 모습인지 샘플을 가지고 있습니까? – SandPiper