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;