Kita dapat menggunakan teknik berikut di PostgreSQL untuk mengembalikan hari terakhir bulan tertentu.
Ini bisa menjadi hari terakhir bulan ini, atau hari terakhir bulan itu berdasarkan tanggal yang kami tentukan.
Akhir Bulan Ini
Berikut ini contoh yang menampilkan hari terakhir bulan ini:
SELECT (date_trunc('month', now()) + interval '1 month - 1 day');
Hasil:
2022-04-30 00:00:00+10
Ini menggunakan date_trunc()
PostgreSQL fungsi, bersama dengan beberapa aritmatika tanggal untuk mengembalikan hasil yang kita inginkan. Fungsi ini memotong nilai tanggal/waktu ke presisi yang ditentukan.
Dalam hal ini saya menggunakan now()
berfungsi untuk mengembalikan tanggal saat ini, dan 'month'
argumen mengubah tanggal itu menjadi awal bulan. Saya kemudian menambahkan satu bulan untuk itu (yang membawanya ke awal bulan berikutnya), kemudian dikurangi satu hari dari tanggal itu untuk memberi kita akhir bulan sebelumnya (yang merupakan akhir dari bulan ini).
Kami dapat mentransmisikannya ke nilai tanggal jika diperlukan:
SELECT (date_trunc('month', now()) + interval '1 month - 1 day')::date;
Hasil:
2022-04-30
Ini dia lagi, bersama dengan tanggal sebenarnya saya menjalankan contoh:
SELECT
now()::date AS "Current Date",
(date_trunc('month', now()) + interval '1 month - 1 day')::date AS "End of Month";
Hasil:
+--------------+--------------+ | Current Date | End of Month | +--------------+--------------+ | 2022-04-09 | 2022-04-30 | +--------------+--------------+
Akhir Bulan Tertentu
Tidak harus akhir bulan berjalan. Kami dapat menentukan tanggal apa pun, dan itu akan mengembalikan akhir bulan, berdasarkan tanggal tersebut.
Contoh:
SELECT (date_trunc('month', date '2030-07-14') + interval '1 month - 1 day')::date;
Hasil:
2030-07-31
Contoh Basis Data
Berikut adalah contoh yang menggunakan tanggal dari database:
SELECT
rental_date,
(date_trunc('month', rental_date) + interval '1 month - 1 day')::date AS "End of Month"
FROM rental WHERE customer_id = 459 LIMIT 10;
Hasil:
+---------------------+--------------+ | rental_date | End of Month | +---------------------+--------------+ | 2005-05-24 22:54:33 | 2005-05-31 | | 2005-06-17 02:50:51 | 2005-06-30 | | 2005-06-17 09:38:22 | 2005-06-30 | | 2005-06-17 16:40:33 | 2005-06-30 | | 2005-06-20 02:39:21 | 2005-06-30 | | 2005-06-20 12:35:44 | 2005-06-30 | | 2005-06-20 12:42:00 | 2005-06-30 | | 2005-06-21 02:39:44 | 2005-06-30 | | 2005-07-06 00:22:29 | 2005-07-31 | | 2005-07-08 02:51:23 | 2005-07-31 | +---------------------+--------------+