Di MySQL, Anda dapat menggunakan DATE_SUB()
fungsi untuk mengurangi jumlah waktu tertentu dari tanggal. Misalnya, Anda dapat menggunakannya untuk mengurangi 7 hari dari tanggal tertentu. Anda dapat menentukan apakah akan mengurangi hari, minggu, bulan, kuartal, tahun, dll. Anda juga dapat mengurangi nilai waktu, seperti detik, mikrodetik, dll.
Fungsi ini mirip dengan DATE_ADD()
, kecuali itu mengurangi dari tanggal, bukan menambahkannya.
Sintaks
Sintaksnya seperti ini:
DATE_SUB(date,INTERVAL expr unit)
Contoh 1 – Penggunaan Dasar
Berikut ini contoh penggunaannya.
SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;
Hasil:
+------------+ | Result | +------------+ | 2021-05-02 | +------------+
Contoh ini mengurangi 5 hari dari tanggal yang diberikan oleh argumen pertama.
Contoh 2 – Unit Tanggal Lainnya
Anda dapat menentukan satuan dalam hari, minggu, bulan, tahun, dll. Berikut beberapa contohnya.
SELECT '2021-05-07' AS 'Start Date', DATE_SUB('2021-05-07', INTERVAL 2 WEEK) AS '-2 Weeks', DATE_SUB('2021-05-07', INTERVAL 2 MONTH) AS '-2 Months', DATE_SUB('2021-05-07', INTERVAL 2 QUARTER) AS '-2 Quarters', DATE_SUB('2021-05-07', INTERVAL 2 YEAR) AS '-2 Years';
Hasil:
+------------+------------+------------+-------------+------------+ | Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years | +------------+------------+------------+-------------+------------+ | 2021-05-07 | 2021-04-23 | 2021-03-07 | 2020-11-07 | 2019-05-07 | +------------+------------+------------+-------------+------------+
Contoh 3 – Satuan Waktu
Anda juga dapat mengurangi unit waktu dari nilai tanggal/waktu. Ini contohnya.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;
Hasil:
+---------------------+ | Result | +---------------------+ | 2021-05-07 05:00:00 | +---------------------+
Dan Anda dapat menentukan beberapa unit sekaligus. Misalnya, Anda dapat menentukan jam dan menit. Seperti ini.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;
Hasil:
+---------------------+ | Result | +---------------------+ | 2021-05-07 08:30:00 | +---------------------+
Nilai yang Diharapkan
Tabel berikut menunjukkan nilai satuan yang valid dan format yang diharapkan.
unit Nilai | expr yang diharapkan Format |
---|---|
MIKROSEKONDA | MIKROSEKON |
DETIK | DETIK |
MENIT | MENIT |
JAM | JAM |
HARI | HARI |
MINGGU | MINGGU |
BULAN | BULAN |
KUARTA | PEREMPAT |
TAHUN | TAHUN |
SECOND_MICROSECOND | ‘SECONDS.MICROSECONDS’ |
MINUTE_MICROSECOND | 'MENIT:DETIK.MIKROSEKON' |
MINUTE_SECOND | 'MENIT:DETIK' |
HOUR_MICROSECOND | ‘JAM:MENIT:DETIK.MICROSECONDS’ |
HOUR_SECOND | 'JAM:MENIT:DETIK' |
HOUR_MINUTE | 'JAM:MENIT' |
DAY_MICROSECOND | 'HARI JAM:MINUTES:SECONDS.MICROSECONDS' |
HARI_DETIK | 'HARI JAM:MENIT:DETIK' |
HARI_MINUTE | 'HARI JAM:MENIT' |
HARI_JAM | 'JAM HARI' |
BULAN_TAHUN | 'TAHUN-BULAN' |
Anda juga dapat menggunakan SUBDATE()
berfungsi untuk melakukan hal yang sama (ini adalah sinonim untuk DATE_SUB()
berfungsi saat menggunakan sintaks yang sama).
Selain itu, sintaks SUBDATE()
memiliki bentuk kedua, yang merupakan metode singkat untuk mengurangkan sejumlah hari dari suatu tanggal. Untuk info lebih lanjut, lihat Contoh SUBDATE() di MySQL.