2016-12-12 6 views
0

TIMESTAMP列の表がrequest_dateと表示されています。タイムスタンプの時間部分を固定値に設定します。

この列の値を選択しますが、次の条件で値を選択します。時刻が19:00:00以降の場合は、翌日に08:00:00を選択する必要があります時間は08:00:00より前です。その日は08:00:00を選択してください)。

select節ではどのように実装されますか?

答えて

1
SELECT CASE WHEN request_date < TRUNC(request_date) + INTERVAL '8' HOUR 
      THEN TRUNC(request_date) + INTERVAL '8' HOUR 
      WHEN request_date >= TRUNC(request_date) + INTERVAL '19' HOUR 
      THEN TRUNC(request_date) + INTERVAL '32' HOUR 
      ELSE request_date 
      END AS adjusted_request_date 
FROM table_name 

または

SELECT CASE WHEN EXTRACT(HOUR FROM request_date) < 8 
      THEN TRUNC(request_date) + INTERVAL '8' HOUR 
      WHEN EXTRACT(HOUR FROM request_date) >= 19 
      THEN TRUNC(request_date) + INTERVAL '32' HOUR 
      ELSE request_date 
      END AS adjusted_request_date 
FROM table_name 
1
select 
    case 
     when to_char(request_date,'HH24') >= 19 
     then to_timestamp(to_char(trunc(request_date) +1,'YYYYMMDD') || '0800','YYYYMMDDHH24MI') 
     when to_char(request_date,'HH24') < 8 
     then to_timestamp(to_char(trunc(request_date),'YYYYMMDD') || '0800','YYYYMMDDHH24MI') 
     else request_date 
    end as ReqStartTS 
関連する問題