Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SUBDATE() vs DATE_SUB() di MySQL:Apa Bedanya?

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghubungkan ke MySQL dari Android dengan JDBC

  2. Penggunaan MySQL JIKA ADA

  3. Bagaimana cara mengubah tindakan referensial kunci asing? (perilaku)

  4. Kueri SQL mengembalikan data dari beberapa tabel

  5. Transformasi Split Bersyarat:Ekspor Data dari SQL Server ke Oracle dan Database MySQL