Cara Menghitung Usia di SQL (PostgreSQL, MySQL, SQL Server)
Pelajari pola SQL praktis untuk menghitung usia dari tanggal lahir: tahun selesai, tahun dan bulan tepatnya, dan usia pada tanggal tertentu. Termasuk contoh untuk PostgreSQL, MySQL, dan SQL Server.
Perlu menghitung usia di SQL dari tanggal lahir? Panduan ini menunjukkan kueri praktis yang siap disalin untuk database umum. Anda akan mempelajari cara menghitung:
- Usia dalam tahun (tahun selesai)
- Usia pada tanggal tertentu (bukan hanya hari ini)
- Output gaya yang tepat (tahun dan bulan) saat Anda memerlukan detail lebih lanjut
1) Tentukan arti "usia" untuk kasus penggunaan Anda
Sebagian besar logika bisnis menggunakan tahun yang diselesaikan. Artinya, seseorang yang lahir pada 10-06-2000 berusia 25 tahun pada 10-06-2026, bukan lebih awal. Berhati-hatilah dengan pengurangan tahun sederhana seperti YEAR(hari ini) - YEAR(dob), karena sebelum ulang tahun adalah kesalahan.
2) PostgreSQL: usia dalam tahun (tahun selesainya)
PostgreSQL memiliki fungsi age() bawaan yang mengembalikan interval. Ekstrak setahun penuh seperti ini:
PILIH EKSTRAK(TAHUN DARI umur(CURRENT_DATE, dob)) SEBAGAI umur_tahun
DARI orang;
PostgreSQL: usia pada tanggal tertentu
PILIH EKSTRAK(TAHUN DARI umur(TANGGAL '23-02-2026', dob)) SEBAGAI umur_tahun
DARI orang;
3) MySQL: usia dalam tahun (tahun selesai)
Di MySQL, gunakan TIMESTAMPDIFF:
PILIH TIMESTAMPDIFF(YEAR, dob, CURDATE()) SEBAGAI umur_tahun
DARI orang;
MySQL: usia pada tanggal tertentu
PILIH TIMESTAMPDIFF(YEAR, dob, DATE('2026-02-23')) SEBAGAI umur_tahun
DARI orang;
4) SQL Server: usia dalam tahun (tahun selesai)
Pola umum di SQL Server adalah DATEDIFF dikurangi cek ulang tahun:
PILIH
DATEDIFF(TAHUN, dob, CAST(GETDATE() AS tanggal))
- KASUS
KAPAN TANGGALADD(TAHUN, TANGGALDIFF(TAHUN, dob, CAST(GETDATE() AS tanggal)), dob) > CAST(GETDATE() AS tanggal)
LALU 1 LAIN 0
AKHIR SEBAGAI umur_tahun
DARI orang;
SQL Server: usia pada tanggal tertentu
NYATAKAN @as_of date = '23-02-2026';
PILIH
DATEDIFF(TAHUN, dob, @as_of)
- KASUS
KAPAN TANGGALADD(TAHUN, TANGGALDIFF(TAHUN, dob, @as_of), dob) > @as_of
LALU 1 LAIN 0
AKHIR SEBAGAI umur_tahun
DARI orang;
5) Contoh usia pasti (tahun dan bulan)
Jika Anda menginginkan presentasi yang "tepat" seperti "31 tahun 4 bulan", hitung tahun terlebih dahulu, lalu bulan setelah ulang tahun terakhir. Berikut ini salah satu contoh PostgreSQL:
DENGAN basis AS (
PILIH dob, CURRENT_DATE AS as_of
DARI orang
)
PILIH
EKSTRAK(TAHUN DARI umur(as_of, dob)) SEBAGAI tahun,
EKSTRAK(BULAN DARI umur(as_of, dob)) SEBAGAI bulan
DARI pangkalan;
Permasalahan umum
- Zona waktu: simpan DOB sebagai
tanggalbila memungkinkan. Tanggal dan waktu dapat berpindah antar zona. - Ulang tahun hari kabisat: menentukan apa yang terjadi pada tahun non kabisat. Sebagian besar sistem memperlakukan ulang tahun 29-02-2004 sebagai 28-02 atau 01-03 bergantung pada kebijakan.
- DOB null atau mendatang: filter atau penjaga, jika tidakkueri Anda akan mengembalikan nilai nol atau negatif.
Pemeriksaan kewarasan cepat
Jika Anda ingin memverifikasi satu DOB dengan cepat, Anda dapat menggunakan kalkulator online: Hitung Usia Online.
Panduan terkait
- Cara Menghitung Usia (panduan lengkap)
- Cara Menghitung Usia di Excel
- Cara Menghitung Usia di JavaScript
Pertanyaan Umum
Mengapa YEAR(hari ini) dikurangi YEAR(dob) salah?
Ini mengabaikan apakah ulang tahun sudah terjadi pada tahun ini, sehingga melebih-lebihkan usia sebelum ulang tahun.
Apa jenis SQL yang paling aman untuk tanggal lahir?
Gunakan kolom tanggal (bukan waktu tanggal) untuk DOB jika Anda hanya mementingkan hari kalender.