1

デートがあります。日付が1月から6月の間​​か、7月から12月の間かを調べたい。たとえば、ユーザーが入力日付 28-NOV-12 を入力した場合、この日付が 7 月から 12 月の間にあることをどのように確認できますか? ユーザーが日付を 28-FEB-12 と入力した場合、この日付は 1 月から 6 月の間ですか? 基本的に半年ごとに日付を確認したいのですが?

ありがとう

4

4 に答える 4

1
select sign(2.5-to_char(<date>, 'q')) from dual;

11月1日から6月30日までの日付およびそれ以外の場合に戻ります-1

説明

to_char(date, 'q')日付の年の四半期(1、2、3、4、1月から3月= 1)を返しますフォーマットモデルを参照)。11月28日の場合、それは4になります。

2.5-quarter第3四半期と第4四半期には負の数を返し、第1四半期と第2四半期には正の数を返します。は、負のsign数と正の数をより単純な-1とに減らし1ます。

テストケース

with da as (
  select date '2012-01-01' te from dual union all
  select date '2012-02-02' te from dual union all
  select date '2012-03-03' te from dual union all
  select date '2012-04-04' te from dual union all
  select date '2012-05-05' te from dual union all
  select date '2012-06-06' te from dual union all
  select date '2012-07-07' te from dual union all
  select date '2012-08-08' te from dual union all
  select date '2012-09-09' te from dual union all
  select date '2012-10-10' te from dual union all
  select date '2012-11-11' te from dual union all
  select date '2012-12-12' te from dual
)
select 
  da.te,
  decode (sign(2.5-to_char(da.te, 'q')),
           1, 'Jan-Jun',
          -1, 'Jul-Dec')
from da;
于 2012-11-28T07:25:53.390 に答える
0
select * from table "28-NOV-2012" WHERE date_column  between TO_DATE('01-JAN-2012') AND TO_DATE('01-JUN-2012');
于 2012-11-28T06:58:09.420 に答える
0

to_charfunctionを試してください。たとえば、次のようにします。

select
    case
        when to_char(date_column, 'mm') <= 6 then '1st' 
        when to_char(date_column, 'mm') >= 7 then '2nd'
    end as half_of_the_year
from your_table

to_char(date_column, 'mm')日付の月 (01..12、01 - 1 月) の部分を返します。

select
    case
        when to_char(sysdate, 'mm') <= 6 then '1st' 
        when to_char(sysdate, 'mm') >= 7 then '2nd'
    end as half_of_the_year
from dual

今日の戻り値:

HALF_OF_THE_YEAR
2nd
于 2012-11-28T07:04:27.617 に答える
0

これを試してください。date_columnは日付データ型でなければなりません。そうでない場合は、TO_DATE(date_column)に変更してください

select
case
    when date_column BETWEEN  TO_DATE('01-JAN-12') AND TO_DATE('03-JUN-12')then '1st Half' 
    ELSE '2nd Half'
end as DatePosition
from table_name
于 2012-11-28T07:15:35.820 に答える