trunc(sysdate, 'Q')
はあなたの現在の四半期の最初の日を与える試してみてください。
trunc(add_months(date '0001-01-01', (y-1)*12 + (q-1)*3), 'Q')
はあなたの年y
における四半期q
の最初の日を与えるでしょう。単純に3ヶ月を追加し、日
<<first day of quarter>> + interval '3' month - interval '1' day
または
add_months(<<first day of quarter>>, 3) - 1
を引き、四半期の最終日の真夜中を取得するには別の年と四半期値
with x as (
select 2016 y, 1 q from dual union all
select 2016, 2 from dual union all
select 2015, 4 from dual
)
select trunc(add_months(date '0001-01-01', (y-1)*12 + (q-1)*3), 'Q')
from x
でこれを呼び出す例
私は一般的にインターバル構文を少しは表現力豊かに見せますが、古い構文はよりコンパクトです。
四半期の最後の日付(四半期の最終日の23:59:59)を希望する場合は、1日ではなく1秒を減算するだけです。
'dateadd'と' datediff'は、SQL関数であり、Oracle関数ではありません。 –
が編集されました。通知をありがとう。 –
は不必要に複雑ですが、oracleは四半期の 'Q'日付形式をサポートしています。 –