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

Bekerja dengan tanggal di PostgreSQL


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:

  1. nilai yang ingin Anda format
  2. 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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menskalakan Koneksi di PostgreSQL Menggunakan Connection Pooling

  2. Tidak dapat membuat layanan yang diminta [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

  3. Mengonversi Kumpulan Hasil dari SQL Array ke Array of Strings

  4. Tren PostgreSQL Terbaru:Tugas yang Paling Banyak Menghabiskan Waktu &Metrik Penting untuk Dilacak

  5. Pasangan nilai kunci di PostgreSQL