手に問題があります。私は、ユーザーが年に関係なく、ユーザーが提供したFROMとTOの日付の範囲内で誕生日を迎えるクライアントにウィッシュカードを送信したいアプリケーションに取り組んでいます。つまり、検索結果は月と日付のみに基づいている必要があります。たとえば、私の入力パラメータは、日付: "12/05"(12月05日)および終了日: "01/04"(1月4日)です。助けてください。前もって感謝します
1774 次
3 に答える
1
PLSQLの抽出機能を使用できます:
extract(MONTH FROM DATE '2003-08-22') would return 8
extract(DAY FROM DATE '2003-08-22') would return 22
于 2012-12-05T11:49:58.573 に答える
0
このクエリ条件を使用する必要があります。birthdate
今から1ヶ月間隔かどうかを選択します。生年月日はどの年からでもかまいません。
where
TO_DATE(TO_CHAR(birthdate,'dd.mm')||'.1900','DD.MM.YYYY') ,
between
TO_DATE(TO_CHAR(sysdate,'dd.mm')||'.1900','DD.MM.YYYY')
and ADD_MONTHS(TO_DATE(TO_CHAR(sysdate,'dd.mm')||'.1900','DD.MM.YYYY'),1)
ユーザーが日付範囲をたとえば「02/03」および「23/06」(このクエリでは「P1」および「P2」)と入力した場合は、次の条件を使用します。
where
(
TO_DATE(TO_CHAR(birthdate,'dd.mm')||'.1900','DD.MM.YYYY') ,
between
TO_DATE('P1'||'.1900','DD.MM.YYYY')
and
TO_DATE('P2'||'.1900','DD.MM.YYYY')
)
OR
(
(TO_DATE('P1'||'.1900','DD.MM.YYYY')
> TO_DATE('P2'||'.1900','DD.MM.YYYY') )
and
(
TO_DATE(TO_CHAR(birthdate,'dd.mm')||'.1900','DD.MM.YYYY') ,
between
TO_DATE('P1'||'.1900','DD.MM.YYYY')
and
TO_DATE('31.12.1900','DD.MM.YYYY')
OR
TO_DATE(TO_CHAR(birthdate,'dd.mm')||'.1901','DD.MM.YYYY') ,
between
TO_DATE('01.01.1901','DD.MM.YYYY')
and
TO_DATE('P2'||'.1901','DD.MM.YYYY')
)
)
于 2012-12-05T12:01:33.163 に答える
0
DOB を DATE として格納したと仮定すると、テーブル PPL で column = "DOB" とします。
つまり、生のセットの場合:
FIRSTNAME LASTNAME DOB
-------------------------------- -------------------------------- ---------
Joe Bloggs 03-JAN-90
Jane Doe 05-JAN-40
Adam West 05-DEC-76
我々が得る
SQL> select firstname, lastname, dob, next_bday
2 from (select firstname, lastname, dob,
3 case when to_date(to_char(dob, 'mmdd'), 'mmdd') < trunc(sysdate)
4 then add_months(to_date(to_char(dob, 'mmdd'), 'mmdd'), 12)
5 else to_date(to_char(dob, 'mmdd'), 'mmdd')
6 end next_bday
7 from ppl)
8 where next_bday < add_months(trunc(sysdate), 1);
FIRS LASTNA DOB NEXT_BDAY
---- ------ --------- ---------
Joe Bloggs 03-JAN-90 03-JAN-13
Adam West 05-DEC-76 05-DEC-12
于 2012-12-05T12:11:44.070 に答える