sql >> データベース >  >> RDS >> PostgreSQL

生年月日を指定して次の誕生日を計算する方法は?

    select birth_date,
           cast(birth_date + ((extract(year from age(birth_date)) + 1) * interval '1' year) as date) as next_birthday
    from person
    where name = 'Bob'
    

    (extract(year from age(birth_date)) + 1) * interval '1' year 次の誕生日の年齢を(完全な)年で計算します。それを生年月日に追加すると、次の誕生日になります。

    実際のdateを取得するにはキャストが必要です date + intervalであるため、戻る タイムスタンプ(時間を含む)を返します。

    whereを削除した場合 条件、あなたはすべての「次の」誕生日を取得します。

    また、次の誕生日のリストを取得することもできます。次の30日間は次のようなものを使用します:

    select next_birthday,
           next_birthday - current_date as days_until_next
    from (
      select birth_date,
             cast(birth_date + ((extract(year from age(birth_date)) + 1) * interval '1' year) as date) as next_birthday
      from person
    ) as upcoming
    where upcoming.next_birthday <= current_date + 30
    order by next_birthday;
    


    1. Oracleセッションの日付形式を確認する方法

    2. プロシージャは、提供されなかったパラメータを予期しています

    3. ORACLE SQLのMAX()

    4. MySQLトリガーでNullを別の値と比較する