Di MariaDB, SUBDATE() adalah fungsi tanggal dan waktu bawaan yang mengurangi jumlah dari tanggal tertentu.
Ini memungkinkan Anda untuk mengubah tanggal dengan menentukan tanggal, unit yang akan dikurangi, dan jumlah yang akan dikurangi. Anda dapat memberikan jumlah negatif untuk menambah ke tanggal, alih-alih menguranginya.
SUBDATE() juga memiliki sintaks pintasan yang memungkinkan Anda menentukan hari untuk dikurangi.
Sintaks
SUBDATE() fungsi memiliki dua sintaks.
Sintaks 1
SUBDATE(expr,days)
Dimana expr adalah tanggal, dan days adalah jumlah hari untuk dikurangi.
Sintaks 2:
SUBDATE(date,INTERVAL expr unit)
Dimana date adalah tanggal untuk berubah, expr adalah jumlah yang akan dikurangi, dan unit adalah unit tanggal/waktu untuk dikurangi (misalnya detik, menit, dll).
Saat menggunakan sintaks ini, SUBDATE() adalah sinonim untuk DATE_SUB() .
Contoh – Sintaks 1
Berikut ini contoh penggunaan sintaks pertama:
SELECT SUBDATE('2021-05-01', 1); Hasil:
+--------------------------+| SUBDATE('2021-05-01', 1) |+--------------------------+| 30-04-2020 |+--------------------------+ Kami juga dapat menyertakan porsi waktu jika diperlukan:
SELECT SUBDATE('2021-05-01 10:00:00', 1); Hasil:
+-----------------------------------+| SUBDATE('2021-05-01 10:00:00', 1) |+------------------------------- ----+| 2021-04-30 10:00:00 |+-----------------------------------+
Berikut adalah dua cara alternatif untuk melakukan hal yang sama:
SELECT
DATE_SUB('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1",
'2021-05-01 10:00:00' - INTERVAL 1 DAY AS "Result 2";
Hasil:
+---------------------+---------------------+| Hasil 1 | Hasil 2 |+---------------------+---------------------+| 2021-04-30 10:00:00 | 2021-04-30 10:00:00 |+---------------------+---------------- -----+
Contoh – Sintaks 2
Berikut ini contoh penggunaan sintaks kedua:
SELECT SUBDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR);
Hasil:
+------------------------------------------------- ---+| SUBDATE('2021-05-31 10:00:00', INTERVAL 1 JAM) |+----------------------------- --------------------+| 2021-05-31 09:00:00 |+-------------------------------------- -----------+
Sintaks ini memungkinkan kita untuk mengurangi unit lain dari tanggal (yaitu bukan hanya hari). Di sini, saya mengurangi satu jam dari tanggal, tetapi saya dapat dengan mudah mengurangi menit, detik, bulan, hari, tahun, dll. Contohnya nanti.
Berikut adalah dua metode alternatif untuk mencapai hasil yang sama seperti contoh di atas:
SELECT
DATE_SUB('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1",
'2021-05-31 10:00:00' - INTERVAL 1 HOUR AS "Result 2";
Hasil:
+---------------------+---------------------+| Hasil 1 | Hasil 2 |+---------------------+---------------------+| 2021-05-31 09:00:00 | 2021-05-31 09:00:00 |+---------------------+---------------- -----+
Interval Negatif
Memberikan interval negatif menambahkan jumlah itu hingga saat ini.
Contoh:
SELECT SUBDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR);
Hasil:
+------------------------------------------------- ----+| SUBDATE('2021-05-31 10:00:00', INTERVAL -1 JAM) |+---------------------------- -----------------------+| 2021-05-31 11:000:00 |+------------------------------------------------- ------------+ Unit Lain
Berikut adalah contoh yang mengurangi interval 1 dari berbagai unit tanggal dan waktu:
SELECT
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;
Hasil (menggunakan keluaran vertikal):
TAHUN:2020-05-01 10:00:00 BULAN:2021-04-01 10:00:00 HARI:2021-04-30 10:00:00 JAM:01-01 2021 09:00:00 MENIT:2021-05-01 09:59:00 KEDUA:05-01 2021 09:59:59MICROSECOND:05-01 2021 09:59:59.999999
Unit Komposit
Berikut ini contoh yang menggunakan unit komposit:
SELECT
SUBDATE('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
SUBDATE('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
SUBDATE('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
Hasil:
+---------------------+---------------------+-- -------------------+| YEAR_MONTH | HOUR_SECOND | DAY_MINUTE |+---------------------+---------------------+--- ------------------+| 2020-03-01 10:00:00 | 2021-05-01 08:34:25 | 2021-05-01 08:30:00 |+---------------------+---------------- -----+---------------------+
Tanggal Nol
Melewati null untuk tanggal kembali null :
SELECT SUBDATE(null, INTERVAL 1 YEAR);
Hasil:
+--------------------------------+| SUBDATE(null, INTERVAL 1 TAHUN) |+--------------------------------+| NULL |+--------------------------------+
Argumen Tidak Ada
Memanggil SUBDATE() dengan jumlah argumen yang salah, atau tanpa memberikan argumen apa pun menghasilkan kesalahan:
SELECT SUBDATE();
Hasil:
ERROR 1064 (42000):Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MariaDB Anda untuk sintaks yang tepat untuk digunakan di dekat ')' di baris 1