Pengantar
Kemampuan untuk menyimpan nilai tanggal di dalam database memungkinkan Anda menambahkan elemen waktu ke kueri dan analisis data Anda. Penting untuk mengetahui cara bekerja dengan jenis tanggal di database masing-masing sehingga Anda bisa akurat dalam pelaporan Anda apakah itu informasi pesanan, usia orang, atau kasus penggunaan lainnya.
Dalam panduan ini, kita akan membahas penyimpanan DATE
mengetik di PostgreSQL dan berbagai cara yang dapat Anda gunakan untuk menggunakannya.
DATE
PostgreSQL tipe data
Tanggal DATE
ketik PostgreSQL dapat menyimpan tanggal tanpa nilai waktu yang terkait:
DATE
PostgreSQL menggunakan 4 byte untuk menyimpan nilai tanggal. Rentang nilai untuk nilai tanggal di PostgreSQL adalah 4713 SM hingga 5874897 M.
Saat menyimpan nilai tanggal, PostgreSQL menggunakan yyyy-mm-dd
format misalnya 1994-10-27. Format ini juga digunakan di PostgreSQL untuk memasukkan data.
Di PostgreSQL, dimungkinkan untuk menetapkan nilai tanggal default dari tanggal saat ini. Ini dapat dilakukan saat membuat tabel Anda dengan menggunakan DEFAULT
dan CURRENT_DATE
kata kunci. last_checkout
kolom dari tabel checkout perpustakaan kami menerima tanggal saat ini secara default:
CREATE TABLE checkouts ( author_id serial PRIMARY KEY, author_name VARCHAR (255) NOT NULL, book_title VARCHAR (255) NOT NULL, published_date DATE NOT NULL, last_checkout DATE NOT NULL DEFAULT CURRENT_DATE);
Mengikuti struktur tabel ini, kita dapat menyisipkan data dengan INSERT INTO
pernyataan:
INSERT INTO checkouts (author_name, book_title, published_date)VALUES('James Joyce', 'Ulysses', '1922-02-02');
Kemudian ketika menanyakan checkouts
tabel, kita mendapatkan yang berikut:
SELECT * FROM checkouts; author_id | author_name | book_title | published_date | last_checkout -----------+-------------+------------+----------------+--------------- 1 | James Joyce | Ulysses | 1922-02-02 | 2021-09-27(1 row)
DATE
PostgreSQL fungsi
Dengan mengetahui seluk beluk DATE
ketik PostgreSQL, Anda kemudian dapat menggunakan fungsi yang bekerja dengan informasi yang Anda simpan. Kita akan membahas beberapa fungsi umum yang dibangun dari tabel yang diperkenalkan di bagian sebelumnya.
Dapatkan tanggal saat ini
Di PostgreSQL, Anda bisa mendapatkan tanggal dan waktu saat ini dengan menggunakan NOW()
bawaan fungsi. Pernyataan berikut akan mengembalikan hari dan waktu:
SELECT NOW(); now ------------------------------- 2021-09-27 15:22:53.679985+02(1 row)
Jika waktunya tidak menarik, Anda juga dapat menentukan untuk hanya mengembalikan tanggal dengan titik dua ganda ::
untuk memberikan DATETIME
nilai ke DATE
nilai:
SELECT NOW()::date; now ------------ 2021-09-27(1 row)
Menggunakan CURRENT_DATE
adalah cara lain untuk mendapatkan tanggal saat ini seperti yang ditunjukkan di bawah ini:
SELECT CURRENT_DATE; current_date -------------- 2021-09-27(1 row)
Ketiga opsi ini akan mengembalikan Anda tanggal dalam yyyy-mm-dd
format. Di dalam PostgreSQL, Anda dapat menyesuaikan format output ini jika diinginkan.
Keluarkan nilai tanggal dalam format tertentu
Untuk menampilkan nilai tanggal dalam format tertentu, Anda menggunakan TO_CHAR()
fungsi. Fungsi ini menerima dua parameter:
- nilai yang ingin Anda format
- template yang menentukan format keluaran
SELECT TO_CHAR(NOW()::date, 'dd/mm/yyyy'); to_char ------------ 27/09/2021(1 row)
Anda juga dapat menampilkan tanggal dalam format seperti Sep 27, 2021
:
SELECT TO_CHAR(NOW():: DATE, 'Mon dd, yyyy'); to_char -------------- Sep 27, 2021(1 row)
Tergantung pada persyaratan sistem, Anda mungkin memerlukan tanggal yang diformat dengan cara tertentu. Ini adalah skenario yang berguna untuk menentukan output di PostgreSQL.
Dapatkan interval antara dua tanggal
PostgreSQL memungkinkan Anda untuk mendapatkan interval antara dua tanggal menggunakan -
operator. Menggunakan operator ini memungkinkan Anda menghitung hal-hal seperti masa kerja seorang karyawan atau waktu sejak penerbitan buku.
Dalam contoh kami, kami ingin menemukan berapa hari sudah sejak Ulysses Joyce diterbitkan dengan mengurangi tanggal saat ini dari published_date
:
SELECT author_name, book_title, now()::date - published_date as diffFROM checkouts;
Menghasilkan:
author_name | book_title | diff -------------+------------+---------------------------- James Joyce | Ulysses | 36397 days (1 row)
Menghitung usia menggunakan nilai tanggal
Kita dapat melanjutkan dengan contoh yang sama untuk menghitung usia pada tanggal saat ini dalam tahun, bulan, dan hari menggunakan AGE()
fungsi. Pernyataan berikut menggunakan AGE()
fungsi untuk menghitung usia publikasi dari perpustakaan kami checkouts
tabel:
SELECT author_name, book_title, AGE(published_date)FROM checkouts;
Dengan fungsi ini kita dapat menghitung berapa umur sebuah buku di inventory:
author_name | book_title | age -------------+------------+------------------------- James Joyce | Ulysses | 99 years 7 mons 25 days(1 row)
Penting untuk diperhatikan bahwa jika Anda memasukkan satu tanggal ke dalam AGE()
fungsi, maka secara otomatis akan menggunakan tanggal saat ini untuk mengurangi dan menghitung. Anda juga dapat memasukkan dua tanggal ke dalam fungsi untuk menghitung usia seperti:
SELECT author_name, book_title, AGE('2000-01-01',published_date),FROM checkouts;
Menghasilkan:
author_name | book_title | age -------------+------------+-------------------------- James Joyce | Ulysses | 77 years 10 mons 27 days(1 row)
Mengekstrak tahun, kuartal, bulan, minggu, atau hari dari nilai tanggal
Fungsi terakhir yang akan kita bahas adalah EXTRACT()
fungsi di PostgreSQL yang memungkinkan Anda untuk memisahkan komponen tanggal seperti tahun, kuartal, bulan, dan hari.
Pernyataan berikut mencantumkan tahun, bulan, dan hari dari tanggal Ulysses diterbitkan :
SELECT author_name, book_title, EXTRACT(YEAR FROM published_date) AS YEAR, EXTRACT(MONTH FROM published_date) AS MONTH, EXTRACT(DAY FROM published_date) AS DAY FROM checkouts;
Hasilnya akan terlihat seperti berikut:
author_name | book_title | year | month | day -------------+------------+------+-------+----- James Joyce | Ulysses | 1922 | 2 | 2(1 row)
Ini adalah fungsi yang berguna untuk diperhatikan ketika Anda mungkin hanya memerlukan sebagian dari nilai tanggal untuk perhitungan dengan data Anda misalnya.
Kesimpulan
Dalam panduan ini, kami membahas dasar-dasar yang dapat Anda lakukan dengan DATE
tipe data di PostgreSQL. Penting untuk mengetahui bagaimana data tanggal bekerja di dalam database Anda. Memiliki pemahaman tentang cara Anda dapat mengaksesnya dan mengoperasikannya memungkinkan Anda membuat perhitungan usia, menjalankan ekstraksi dalam kueri Anda, dan juga mengonfigurasi keluaran Anda jika perlu untuk mencocokkan persyaratan sistem lain.