Формулировка по времени - PullRequest
       7

Формулировка по времени

0 голосов
/ 24 апреля 2020

У меня есть следующая таблица

enter image description here

На основе транзакции_DT: если транзакция между 04: 00: 00 PM - 08: 00:00 AM + следующий день получить «После часа»

Между 08: 00: 00 до 16:00:00 в течение того же дня получить «Рабочий час»

Использование оператора case не работает!

CASE
          WHEN   (  Transacton_DT >= TO_DATE ('4:00:00 PM', 'HH:MI:SS PM')
               AND Transacton_DT  <= TO_DATE ('11:59:00 PM', 'HH:MI:SS PM') )
               OR ( Transacton_DT  >= TO_DATE ('12:01:00 AM', 'HH:MI:SS AM')
               AND Transacton_DT  <= TO_DATE('8:00:00 AM', 'HH:MI:SS AM') )
          THEN
             'After Hour'
 ELSE
             'Working Hour'
 END AS "Shift"

Ответы [ 2 ]

3 голосов
/ 24 апреля 2020

Хммм. , , Примерно так:

(case when to_char(transaction_dt, 'HH24:MI') between '08:00' and '16:00'
      then 'Working hours' else 'After hours'
 end)

Ваш код не работает, потому что вы сравниваете значение только с компонентом времени (а также с компонентом даты по умолчанию) с значением с компонентом даты.

0 голосов
/ 24 апреля 2020
case 
    when to_char(transaction_dt, 'HH24:MI')  between '08:00' and '23:59' 
    or to_char(transaction_dt, 'HH24:MI') between '00:00' and '07:59' 
    then 'Working hours' 
else 'After hours' end
...