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

Cara Mengekstrak Nomor Minggu dari Tanggal di PostgreSQL

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kustom ORDER BY Penjelasan

  2. date_trunc interval 5 menit di PostgreSQL

  3. Analog postgres untuk CROSS APPLY di SQL Server

  4. postgresql menghasilkan urutan tanpa celah

  5. Mendapatkan [pengarsip] versi yang tidak didukung (1.13) di header file saat menjalankan pg_restore