PostgreSQL memberi kita beberapa cara untuk mendapatkan hari, bulan, dan tahun dari sebuah tanggal.
Tiga fungsi yang langsung terbayang adalah; DATE_PART()
, EXTRACT()
, dan TO_CHAR()
.
EXTRACT()
EXTRACT()
function mengambil subbidang seperti tahun, bulan, jam, atau menit, bagian dari nilai tanggal/waktu.
Contoh:
SELECT EXTRACT(YEAR FROM date '2035-10-30');
Hasil:
2035
Kami dapat mengembalikan bagian tanggal yang berbeda di bidang terpisah dengan membuat tiga panggilan terpisah ke fungsi ini:
SELECT
EXTRACT(DAY FROM date '2035-10-30') AS "Day",
EXTRACT(DOW FROM date '2035-10-30') AS "DOW",
EXTRACT(DOY FROM date '2035-10-30') AS "DOY",
EXTRACT(MONTH FROM date '2035-10-30') AS "Month",
EXTRACT(YEAR FROM date '2035-10-30') AS "Year";
Hasil:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
Di sini, saya mengembalikan hari dalam sebulan, hari dalam seminggu, hari dalam setahun, bulan, dan tahun dari tanggal.
Lihat Cara Kerja Extract() di PostgreSQL untuk contoh lainnya, dan daftar nama bidang yang dapat ditampilkan oleh fungsi ini.
DATE_PART()
DATE_PART()
fungsi setara dengan EXTRACT()
, tetapi dengan sintaks yang sedikit berbeda.
SELECT
DATE_PART('DAY', date '2035-10-30') AS "Day",
DATE_PART('DOW', date '2035-10-30') AS "DOW",
DATE_PART('DOY', date '2035-10-30') AS "DOY",
DATE_PART('MONTH', date '2035-10-30') AS "Month",
DATE_PART('YEAR', date '2035-10-30') AS "Year";
Hasil:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
Fungsi ini mengharuskan argumen pertama diberikan sebagai string, dan koma memisahkan kedua argumen sebagai ganti FROM
kata kunci.
TO_CHAR()
TO_CHAR()
Fungsinya lebih fleksibel, karena dapat digunakan untuk menyediakan output yang lebih beragam. Misalnya, kita dapat menggunakan fungsi ini untuk menampilkan hari, bulan, dan tahun dalam satu bidang:
SELECT TO_CHAR(date '2045-12-02', 'Day, DDth Month YYYY');
Hasil:
Saturday , 02nd December 2045
Kita bisa menggunakan fm
pengubah template untuk menekan padding apa pun yang mungkin diterapkan:
SELECT TO_CHAR(date '2165-04-01', 'fmDay, fmDDth fmMonth YYYY');
Hasil:
Monday, 1st April 2165
Perhatikan juga bahwa th
pengubah template cukup pintar untuk mengetahui apakah st
, nd
, rd
, atau th
harus ditambahkan.
Berikut adalah contoh yang menggunakan berbagai panggilan ke TO_CHAR()
untuk menampilkan berbagai bagian tanggal di bidang terpisah:
SELECT
TO_CHAR(date '2165-04-01', 'fmDay') AS "Day",
TO_CHAR(date '2165-04-01', 'fmDD') AS "DD",
TO_CHAR(date '2165-04-01', 'fmMonth') AS "Month",
TO_CHAR(date '2165-04-01', 'YYYY') AS "YYYY";
Hasil:
Day | DD | Month | YYYY --------+----+-------+------ Monday | 1 | April | 2165