Perbedaan antara SUBDATE()
MySQL dan DATE_SUB()
fungsinya sama persis dengan perbedaan antara ADDDATE()
dan DATE_ADD()
fungsi. Satu fungsi memungkinkan untuk dua bentuk sintaks yang berbeda, sedangkan yang lain memungkinkan hanya satu.
Artikel ini menunjukkan perbedaannya.
Sintaks
Berikut sintaks untuk setiap fungsi.
TANGGAL_SUB()
DATE_SUB()
sintaksnya seperti ini.
DATE_SUB(date,INTERVAL expr unit)
Ini menerima nilai tanggal, diikuti oleh INTERVAL
kata kunci dan ekspresi serta unit yang akan dikurangi dari tanggal yang diberikan oleh argumen pertama.
SUBDATE()
SUBDATE()
sintaks memungkinkan untuk dua bentuk. Anda dapat menggunakan salah satu formulir berikut.
SUBDATE(date,INTERVAL expr unit)
Atau
SUBDATE(expr,days)
Bentuk pertama sama persis dengan DATE_SUB()
sintaks, dan ketika Anda menggunakan sintaks ini, SUBDATE()
fungsi adalah sinonim untuk DATE_SUB()
.
Namun, formulir sintaks kedua hanya tersedia saat menggunakan SUBDATE()
fungsi, dan ini memungkinkan Anda menggunakan cara singkat untuk menentukan jumlah hari yang akan dikurangi dari tanggal.
Contoh
Berikut adalah contoh penggunaan kedua fungsi untuk mengurangi jumlah hari tertentu dari tanggal yang sama.
SET @date = '2023-12-10'; SELECT DATE_SUB(@date, INTERVAL 5 DAY) AS 'DATE_SUB', SUBDATE(@date, INTERVAL 5 DAY) AS 'SUBDATE 1', SUBDATE(@date, 5) AS 'SUBDATE 2';
Hasil:
+------------+------------+------------+ | DATE_SUB | SUBDATE 1 | SUBDATE 2 | +------------+------------+------------+ | 2023-12-05 | 2023-12-05 | 2023-12-05 | +------------+------------+------------+
Namun, jika kita mencoba menggunakan bentuk sintaks alternatif dengan DATE_SUB()
kami mendapatkan kesalahan.
SET @date = '2023-12-10'; SELECT DATE_SUB(@date, 5) AS 'DATE_SUB 2';
Hasil:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5) AS 'DATE_SUB 2'' at line 1
Dan tentu saja, alasan kesalahan ini adalah karena DATE_SUB()
tidak mendukung sintaks tersebut.
Perhatikan bahwa bentuk sintaks kedua ini hanya dapat digunakan untuk mengurangkan hari dari tanggal. Jika Anda perlu mengurangi unit lain (misalnya, bulan), Anda harus menggunakan sintaks pertama.