Masalah:
Anda ingin menemukan hari terakhir dalam sebulan untuk tanggal tertentu di T-SQL.
Contoh:
Database kami memiliki tabel bernama Furniture
dengan data di kolom Id
, Name
, dan PurchaseDate
.
Id | Nama | Tanggal Pembelian |
---|---|---|
1 | sofa | 10-02-2019 |
2 | meja | 01-04-2019 |
3 | rak buku | 20-05-2019 |
Mari kita dapatkan nama produk dan tanggal pembelian dan hari terakhir bulan ketika barang-barang ini dibeli.
Solusi:
Kami akan menggunakan fungsi EOMONTH() untuk menemukan hari terakhir dalam sebulan.
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate) AS LastDayDate FROM Furniture;
Berikut hasil querynya:
Nama | Tanggal Pembelian | TanggalHariTerakhir |
---|---|---|
sofa | 02-2019-10 | 02-2019-28 |
meja | 04-2019-01 | 04-2019-30 |
rak buku | 05-2019-20 | 05-2019-31 |
Diskusi:
Jika Anda ingin mendapatkan tanggal yang berisi hari terakhir bulan dari tanggal tertentu, gunakan fungsi EOMONTH(). Fungsi ini membutuhkan satu argumen wajib:tanggal (atau tanggal dan waktu), yang dapat berupa kolom tanggal/waktu atau ekspresi yang mengembalikan tanggal. (Dalam contoh kami, kami menggunakan PurchaseDate
kolom.)
EOMONTH() mengembalikan hari terakhir bulan yang sama dengan argumen. Permintaan di atas untuk sofa dengan tanggal pembelian '2019-02-10' mengembalikan '2019-02-28'; pada bulan Februari 2019, hari terakhir bulan itu adalah tanggal 28.
Jika Anda ingin mengembalikan hari terakhir bulan kedua, ketiga, dst. dari tanggal tertentu, gunakan argumen kedua opsional EOMONTH():jumlah bulan untuk ditambahkan. Lihat contohnya:
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate,1) AS LastDayDate FROM Furniture;
Berikut hasil querynya:
Nama | Tanggal Pembelian | TanggalHariTerakhir |
---|---|---|
sofa | 2019-02 -10 | 2019-03 -30 |
meja | 2019-04 -01 | 2019-05 -31 |
rak buku | 2019-05 -20 | 2019-06 -30 |
Untuk sofa dengan tanggal pembelian '2019-02-10', kueri ini menampilkan '30-03-2019' – hari terakhir berikutnya bulan. Kami telah menambahkan satu bulan ke akhir bulan ini.
Jika Anda ingin menemukan hari terakhir bulan ini sebelum bulan tertentu, gunakan nilai negatif (misalnya '-1') sebagai argumen kedua:
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate,-1) AS LastDayDate FROM Furniture;
Berikut hasil querynya:
Nama | Tanggal Pembelian | TanggalHariTerakhir |
---|---|---|
sofa | 2019-02 -10 | 2019-01 -31 |
meja | 2019-04 -01 | 2019-03 -31 |
rak buku | 2019-05 -20 | 2019-04 -30 |