PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana menghitung ulang tahun berikutnya diberikan tanggal lahir?

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'

Ekspresi (extract(year from age(birth_date)) + 1) * interval '1' year menghitung usia pada ulang tahun berikutnya dalam (lengkap) tahun. Saat menambahkannya ke tanggal lahir, ini memberikan ulang tahun berikutnya.

Pemeran diperlukan untuk mendapatkan date yang sebenarnya kembali, karena date + interval mengembalikan stempel waktu (termasuk waktu).

Jika Anda menghapus where kondisi, Anda akan mendapatkan semua ulang tahun "berikutnya".

Anda juga bisa mendapatkan daftar ulang tahun yang akan datang di mis. 30 hari ke depan menggunakan sesuatu seperti ini:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. indeks dataframe.to_sql sebagai kunci utama di postgresql

  2. Rails - Menggunakan join dengan asosiasi yang diberi nama khusus

  3. Apakah modul Ltree PostgreSQL cocok untuk komentar berulir?

  4. Kurangi Menit dari Nilai Waktu di PostgreSQL

  5. Cloud9 + rails + penggunaan Postgresql