Masalah:
Anda ingin mendapatkan nomor minggu dari tanggal atau nilai stempel waktu dalam database PostgreSQL.
Contoh:
Basis data kami memiliki tabel bernama children
dengan data pada kolom id
, first_name
, last_name
, dan birth_date
.
id | nama_depan | nama_belakang | tanggal_lahir |
---|---|---|---|
1 | Angela | Michelin | 01-01-2018 |
2 | Martin | Jackson | 26-07-2002 |
3 | Justin | Clark | 26-12-2010 |
4 | Terus terang | Barker | 08-06-2008 |
Untuk setiap anak, sebutkan nama depan, nama belakang, dan nomor minggu tanggal lahir mereka.
Solusi 1:
Kami akan menggunakan DATE_PART()
fungsi. Inilah kueri yang akan Anda tulis:
SELECT first_name, last_name, DATE_PART('week',birth_date) AS birth_week_number FROM children;
Berikut hasil querynya:
nama_depan | nama_belakang | jumlah_minggu_kelahiran |
---|---|---|
Angela | Michelin | 1 |
Martin | Jackson | 30 |
Justin | Clark | 51 |
Terus terang | Barker | 23 |
Diskusi:
Gunakan DATE_PART()
berfungsi untuk mengambil nomor minggu dari tanggal dalam database PostgreSQL. Fungsi ini membutuhkan dua argumen. Argumen pertama adalah bagian tanggal yang akan diambil; kami menggunakan 'minggu', yang mengembalikan nomor minggu (misalnya "1" untuk minggu pertama di bulan Januari, minggu pertama tahun ini). Anda dapat menggunakan bagian tanggal lain, seperti hari, tahun, bulan, jam, menit, doy (angka hari dalam tahun), dll. Anda dapat mempelajari lebih lanjut tentang bagian tanggal dalam dokumentasi PostgreSQL.
Argumen kedua adalah nama kolom dari tipe data tanggal/stempel waktu/waktu atau ekspresi yang mengembalikan salah satu tipe ini. (Dalam contoh kita, ini adalah kolom tanggal tipe data.)
Saat digunakan dengan bagian tanggal 'minggu', fungsi DATE_PART()
mengembalikan nomor minggu sebagai bilangan bulat. Dalam contoh kami, nomor minggu untuk tanggal lahir anak yang diberikan ditampilkan; kami menamai kolom ini birth_week_number
. Martin Jackson lahir pada 2002-07-26
, jadi fungsi mengembalikan '30' sebagai nomor minggu dari tanggal lahirnya.
DATE_PART()
bukan hanya salah satu cara untuk mendapatkan nomor minggu. Pilihan lainnya adalah dengan menggunakan EXTRACT()
fungsi.
Solusi 2:
Kami akan menggunakan EXTRACT()
fungsi. Inilah kueri yang akan Anda tulis:
SELECT first_name, last_name, EXTRACT('week' FROM birth_date) AS birth_week_number FROM children;
Fungsi ini mirip dengan DATE_PART()
. Perbedaannya terletak pada sintaks:alih-alih koma antara nama bagian tanggal dan kolom/ekspresi, ada kata kunci FROM. Juga, EXTRACT()
fungsi adalah standar SQL. Hasilnya sama untuk kedua fungsi.