Query EXTRACT untuk menangani TIMESTAMP di Postgresql
Pendahuluan
Postgresql merupakan software database berbasis relasi yang cukup powerfull untuk aplikasi kecil maupun besar, developer yang masih baru maupun lama menggunakan postgresql terkadang masih melakukan kesalahan dalam menangani permasalahan dengan format data timestamp.
Misalkan kita mau mengambil tahun dari suatu kolom dengan format data timestamp misalnya '2022-04-09 10:09:11'
masih ada yang menggunakan fungsi LEFT(column_name, 4) meskipun itu bisa dilakukan akan tetapi sebenarnya postgresql sendiri sudah ada fungsi EXTRACT
yang khusus untuk menangani permasalahan tersebut.
Fungsi EXTRACT postgresql
Fungsi EXTRACT dapat digunakan untuk mengambil bagian-bagian tertentu dari data dengan format datetime.
Baca Juga : Memantau Server Linux dengan Grafana dan Prometheus
Penulisan Query EXTRACT (Syntax)
Berikut ini gambaran syntax query fungsi EXTRACT:
EXTRACT(field FROM source)
Keterangan (Arguments) :
Fungsi query EXTRACT()
ini memiliki dua argumen wajib :
1. field
Argumen field
menentukan bagian mana yang mau diekstrak dari value tanggal/waktu, berikut ini table informasi field yang bisa digunakan pada fungsi EXTRACT()
.
Field Value | TIMESTAMP | Interval |
---|---|---|
CENTURY | The century (abad) | The number of centuries |
DAY | The day of the month (1-31) | The number of days |
DECADE | The decade that is the year divided by 10 | Sames as TIMESTAMP |
DOW | The day of week Sunday (0) to Saturday (6) | N/A |
DOY | The day of year that ranges from 1 to 366 | N/A |
EPOCH | The number of seconds since 1970-01-01 00:00:00 UTC | The total number of seconds in the interval |
HOUR | The hour (0-23) | The number of hours |
ISODOW | Day of week based on ISO 8601 Monday (1) to Sunday (7) | N/A |
ISOYEAR | ISO 8601 week number of year | N/A |
MICROSECONDS | The seconds field, including fractional parts, multiplied by 1000000 | Sames as TIMESTAMP |
MILLENNIUM | The millennium | The number of millennium |
MILLISECONDS | The seconds field, including fractional parts, multiplied by 1000 | Sames as TIMESTAMP |
MINUTE | The minute (0-59) | The number of minutes |
MONTH | Month, 1-12 | The number of months, modulo (0-11) |
QUARTER | Quarter of the year | The number of quarters |
SECOND | The second | The number of seconds |
TIMEZONE | The timezone offset from UTC, measured in seconds | N/A |
TIMEZONE_HOUR | The hour component of the time zone offset | N/A |
TIMEZONE_MINUTE | The minute component of the time zone offset | N/A |
WEEK | The number of the ISO 8601 week-numbering week of the year | N/A |
YEAR | The year | Sames as TIMESTAMP |
2. source
Pada bagian argument source merupakan nilai dengan tipe data timestamp yang datanya mau diekstrak. Pada bagian ini juga bisa diisi dengan nama column dengan tipe data timestamp atau datetime tetapi jika anda mengisinya dengan format date
maka akan otomatis di convert ke timestamp jadi untuk bagian jam, menit, detiknya secara default jadi 00:00:00.
Contoh penggunaan fungsi query EXTRACT
Berikut ini adalah beberapa contoh penggunaan query EXTRACT()
Contoh ekstrak dari kolom suatu table
Mengekstrak tahun dari kolom dengan tipe data timestamp
SELECT id, created_at, EXTRACT(YEAR FROM created_at) as created_year FROM users;
akan memberikan hasil sebagai berikut:
id | created_at | created_year
----+---------------------+--------------
1 | 2021-12-07 12:09:08 | 2021
2 | 2021-07-04 22:20:10 | 2021
3 | 2021-07-24 11:18:44 | 2021
4 | 2021-07-30 17:57:51 | 2021
5 | 2021-07-31 22:08:17 | 2021
(5 rows)
Selanjutnya car mengekstrak bulan dari kolom dengan tipe data timestamp
adalah sebagai berikut
SELECT id, created_at, EXTRACT(MONTH FROM created_at) as created_month FROM users;
akan memberikan hasil sebagai berikut:
id | created_at | created_month
----+---------------------+--------------
1 | 2021-12-07 12:09:08 | 12
2 | 2021-07-04 22:20:10 | 7
3 | 2021-07-24 11:18:44 | 7
4 | 2021-07-30 17:57:51 | 7
5 | 2021-07-31 22:08:17 | 7
(5 rows)
Kesimpulan
Bagaimana, apakah sudah paham cara penggunaannya ? supaya lebih paham silahkan pelajari sambil di peraktikan.
Sekian, salam coder’s..