Masalah:
Anda ingin menampilkan tanggal kemarin (tanpa waktu) dalam database PostgreSQL.
Solusi 1:
SELECT current_date - INTEGER '1' AS yesterday_date;
Dengan asumsi hari ini adalah 24-09-2020, hasilnya adalah:
kemarin_date |
---|
23-09-2020 |
Diskusi:
Untuk mendapatkan tanggal kemarin, Anda perlu mengurangi satu hari dari tanggal hari ini. Gunakan current_date
untuk mendapatkan tanggal hari ini. Perhatikan bahwa Anda tidak memerlukan tanda kurung di akhir current_date
fungsi. Di PostgreSQL, Anda dapat mengurangi atau menambahkan jumlah hari apa pun menggunakan INTEGER
kata kunci. Di sini, karena Anda perlu mengurangi satu hari, Anda menggunakan - INTEGER '1'
untuk mendapatkan kencan kemarin. Perhatikan bahwa hasil perhitungan ini masih memiliki jenis kolom date
.
Solusi 2:
SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;
Dengan asumsi hari ini adalah 24-09-2020, hasilnya adalah:
kemarin_date |
---|
23-09-2020 |
Diskusi:
Dapatkan tanggal hari ini menggunakan current_date
. Anda perlu mengurangi interval satu hari dari tanggal saat ini. Untuk melakukannya, gunakan INTERVAL
kata kunci, yang membuat interval waktu/tanggal yang Anda inginkan (di sini, '1 day'
, yang di PostgreSQL sama dengan 24 jam). Mengurangi INTERVAL '1 day'
dari tanggal hari ini akan menghasilkan kolom yang diformat sebagai stempel waktu, jadi Anda harus memasukkannya ke date
. Cara tercepat untuk melakukannya di PostgreSQL adalah menambahkan ::date
ke seluruh ekspresi (ingat untuk menyertakan ekspresi dalam tanda kurung).
Tentu saja, Anda dapat kembali dengan interval waktu apa pun dengan mudah. Ini contohnya:
SELECT (current_date - INTERVAL '3 months 10 days')::date;
Sebuah INTERVAL
juga dapat ditambahkan untuk kencan. Nah, ini dia caranya kalau mau kencan besok:
SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;