Pendahuluan
MySQL hadir dengan banyak fungsi bawaan yang memungkinkan Anda untuk memanipulasi data. Fungsi-fungsi ini dikelompokkan ke dalam kategori – fungsi tanggal, fungsi string, fungsi matematika, dan lainnya.
Fungsi tanggal memberi Anda banyak pilihan tentang cara memodifikasi, menghitung, dan mengonversi ekspresi tanggal, waktu, dan waktu di MySQL.
Dalam tutorial ini, Anda akan belajar tentang fungsi tanggal dan waktu MySQL dan cara kerjanya, pada contoh praktis.
Fungsi Terkait Tanggal
TANGGAL TANGGAL ATAU TANGGAL_JALAN
Kembalikan tanggal saat ini dalam format “YYY-MM-DD” atau “YYYYMMDD” dengan CURDATE
ATAU CURRENT_DATE
perintah.
Sintaks dasar:
CURDATE();
Misalnya, jika Anda menjalankan:
SELECT CURDATE();
MySQL merespons dengan tanggal saat ini dalam format:
2021-01-17
TANGGAL
Kembalikan tanggal dari ekspresi datetime menggunakan DATE
perintah.
Sintaks dasar:
DATE(datetime);
Misalnya, jika Anda menjalankan:
SELECT DATE('2021-01-17 10:12:16');
Outputnya adalah:
2021-01-17
DATE_ADD atau ADDDATE
Tambahkan nilai waktu/tanggal ke ekspresi tanggal dengan DATE_ADD
atau ADDDATE
fungsi.
Sintaks dasar:
DATE_ADD(date, INTERVAL value unit);
Ganti tanggal dengan ekspresi tanggal yang ingin Anda tambahkan waktu/tanggal. Satuan nilai adalah waktu/tanggal yang ingin Anda tambahkan. Itu perlu dinyatakan dalam nilai numerik bersama dengan satuan nilainya.
Satuan bisa:
- DUA
- MENIT
- JAM
- HARI
- MINGGU
- BULAN
- PEREMPAT
- TAHUN
- SECOND_MICROSECOND
- MINUTE_MICROSECOND
- MINUTE_SECOND
- HOUR_MICROSECOND
- HOUR_SECOND
- HOUR_MINUTE
- DAY_MICROSECOND
- HARI_DETIK
- DAY_MINUTE
- HARI_JAM
- YEAR_MONTH
Misalnya, jika Anda menjalankan:
SELECT DATE_ADD('2021-01-17 07:14:21', INTERVAL 20 MINUTE);
Output mengembalikan hasil:
2021-01-17 07:34:21
FORMAT_TANGGAL
Format tanggal menggunakan DATE_FORMAT
.
Sintaks dasar:
DATE_FORMAT(date, format);
Tanggal adalah ekspresi tanggal yang ingin Anda format ulang, sedangkan format adalah kombinasi dari penentu berikut:
Misalnya, jika Anda menjalankan:
SELECT DATE_FORMAT('2021-01-17', '%W %M %Y');
Output menampilkan hasil:
Sunday January 2021
DATE_SUB atau SUBDATE
Kurangi nilai waktu/tanggal ke ekspresi tanggal dengan DATE_SUB
atau SUBDATE
fungsi.
Sintaks dasar:
DATE_SUB(date, INTERVAL value unit);
Ganti tanggal dengan ekspresi tanggal yang ingin Anda kurangi. Satuan nilai adalah waktu/tanggal yang ingin Anda kurangi. Itu perlu dinyatakan dalam nilai numerik bersama dengan satuan nilainya.
Temukan daftar jenis unit di bagian DATE_ADD.
Misalnya, jika Anda menjalankan:
SELECT DATE_SUB('2021-01-17 07:14:21', INTERVAL 1 HOUR);
Output mengembalikan hasil:
2021-01-17 06:14:21
DATEDIFF
Kembalikan jumlah hari antara dua ekspresi tanggal dengan DATEDIFF
fungsi.
Sintaks dasar:
DATEDIFF(date1,date2);
Misalnya:
SELECT DATEDIFF('2021-01-23','2021-01-14');
Mengembalikan hasil:
9
EKSTRAK
Untuk mengekstrak bagian dari ekspresi tanggal/waktu, gunakan EXTRACT
fungsi.
Sintaks dasar:
EXTRACT(unit FROM date);
Dalam perintah, Anda perlu menentukan unit . mana Anda ingin mengekstrak dari tanggal specified yang ditentukan .
Temukan daftar unit yang dapat Anda gunakan dalam deskripsi DATE_ADD.
Misalnya, saat Anda menjalankan:
SELECT EXTRACT(DAY FROM '2021-01-26');
Anda mendapatkan hasilnya:
26
GET_FORMAT
Kembalikan string format (kombinasi penentu) seperti yang ditentukan dalam argumen dengan GET_FORMAT
. Fungsi ini sering digunakan dengan DATE_FORMAT
.
Sintaks dasar:
GET_FORMAT(DATE/TIME/DATETIME,format)
Gunakan fungsi ini dengan ekspresi tanggal, waktu, dan waktu.
Format bisa:
- ‘EUR’
- 'AS'
- 'JIS'
- 'ISO'
- 'INTERNAL'
Ada sejumlah hasil terbatas yang bisa Anda dapatkan dengan menggunakan GET_FORMAT
fungsi. Di bawah ini Anda akan menemukan daftar semua panggilan fungsi dan hasilnya.
Misalnya, Anda dapat menggabungkan fungsi dengan DATE_FORMAT
, seperti pada contoh berikut:
SELECT DATE_FORMAT('2021-01-26', GET_FORMAT(DATE,'EUR'));
Dimana hasilnya adalah:
26.01.2021
DIBUAT
Kembalikan ekspresi tanggal dari tahun dan hari tertentu dalam setahun menggunakan MAKEDATE
fungsi.
Sintaks dasar:
MAKEDATE(year,day);
Misalnya, jika Anda menjalankan:
SELECT MAKEDATE(2021,34);
Output menunjukkan hasilnya:
2021-02-03
STR_TO_DATE
Format tanggal dari string dengan STR_TO_DATE
dan mengembalikan nilai tanggal/waktu.
Sintaks dasar:
STR_TO_DATE(string, format);
string adalah yang ingin Anda format ulang, sedangkan format adalah kombinasi penentu yang menjelaskan setiap elemen string .
Anda dapat menemukan daftar penentu dan artinya di bagian DATE_FORMAT.
Misalnya, jika Anda menjalankan:
SELECT STR_TO_DATE('January,25,2021', '%M %e %Y');
Outputnya menunjukkan:
2021-01-25
SYSDATE
Untuk mengembalikan tanggal dan waktu saat ini dalam format “YYYY-MM-DD jj:mm:dd” atau “YYYYMMDDHHMMSS.uuuuuu”, gunakan SYSDATE
fungsi.
Sintaks dasar:
SYSDATE();
Anda dapat menambahkan fsp
argumen untuk memasukkan presisi kedua pecahan (0-6). Dalam hal ini, sintaksnya adalah SYSDATE(fsp);
.
Perintah yang ditunjukkan di bawah ini:
SELECT SYSDATE();
Saat ini berikan hasilnya:
2021-01-25 20:21:04
UTC_DATE
Kembalikan nilai tanggal Waktu Universal Terkoordinasi (UTC) saat ini dalam format “YYYY-MM-DD” atau “YYYYMMDD” dengan UTC_DATE
fungsi.
Sintaks dasar:
UTC_DATE();
Misalnya, menjalankan perintah berikut:
SELECT UTC_DATE();
Mengembalikan tanggal saat ini yaitu:
2021-01-25
Fungsi Terkait Waktu
TAMBAH WAKTU
Tambahkan interval waktu ke ekspresi waktu/tanggal-waktu tertentu menggunakan ADDTIME
.
Sintaks dasar:
ADDTIME(datetime, timevalue)
Misalnya, jika Anda menjalankan:
SELECT ADDTIME('2021-01-25 08:13:11.000021', '3:14:32.000006');
Anda mendapatkan hasilnya:
2021-01-25 11:27:43.000027
CONVERT_TZ
Ubah ekspresi waktu/tanggalwaktu dari satu zona waktu ke zona waktu lainnya menggunakan ADDTIME
fungsi.
Sintaks dasar:
CONVERT_TZ(datetime, from_timezone,to_timezone)
Misalnya, saat Anda menjalankan:
SELECT CONVERT_TZ('2021-01-25 10:12:00','+00:00','+10:00');
MySQL mengonversi waktu tanggal yang ditentukan menjadi +10:00 zona waktu:
2021-01-25 20:12:00
CURTIME atau CURRENT_TIME
Kembalikan waktu saat ini menggunakan CURTIME
atau CURRENT_TIME
fungsi. Hasilnya mengembalikan waktu dalam format “hh:mm:ss” atau “hhmmss”.
Sintaks dasar:
CURTIME();
Anda dapat menyertakan presisi pecahan detik (dari 0 hingga 6) dengan menambahkan fsp
argumen.
Misalnya, perintah berikut menunjukkan waktu saat ini dengan presisi tiga fraksi detik:
CURTIME(3);
Output merespons dengan hasil:
15:19:07.340
JAM
Kembalikan jam dari waktu/tanggal yang ditentukan dengan HOUR
fungsi.
Sintaks dasar:
HOUR(datetime);
Misalnya, jika Anda menjalankan:
SELECT HOUR('08:40:07');
Hasilnya adalah:
8
TETAP WAKTU
Mengembalikan ekspresi waktu dari nilai jam, menit, dan detik yang ditentukan menggunakan MAKETIME
fungsi.
Sintaks dasar:
MAKETIME(hour, minute, second);
Misalnya, Anda dapat menjalankan:
SELECT MAKETIME(09,25,00);
Di mana output ditampilkan:
09:25:00
MICROSECOND
Kembalikan mikrodetik dari ekspresi waktu/tanggal-waktu yang ditentukan dengan MICROSECOND
.
Sintaks dasar:
MICROSECOND(datetime);
Misalnya, Anda dapat menjalankan:
SELECT MICROSECOND('2021-01-21 10:23:44.000040');
Dimana hasilnya adalah:
40
MENIT
Kembalikan menit dari ekspresi waktu/datetime yang ditentukan menggunakan MINUTE
fungsi.
Sintaks dasar:
MINUTE(datetime);
Misalnya, jika Anda menjalankan perintah:
SELECT MINUTE('10:23:44');
Hasilnya adalah:
23
SEC_TO_TIME
Kembalikan nilai waktu dari nilai detik yang ditentukan dengan SEC_TO_TIME
fungsi.
Sintaks dasar:
SEC_TO_TIME(seconds);
Misalnya, jika Anda menjalankan perintah:
SELECT SEC_TO_TIME(8897);
Outputnya adalah:
02:28:17
SUBTIME
Kurangi nilai waktu dari ekspresi waktu/tanggalwaktu menggunakan SUBTIME
fungsi.
Sintaks dasar:
SUBTIME(datetime,timevalue);
Misalnya, saat Anda menjalankan:
SELECT SUBTIME('2021-01-21 21:24:00','2:20:1');
Outputnya adalah:
2021-01-21 19:03:59
WAKTU
Untuk mengembalikan nilai waktu dari ekspresi datetime, gunakan TIME
fungsi.
Sintaks dasar:
TIME(datetime);
Misalnya:
SELECT TIME('2021-01-22 13:38:10');
Memberikan hasil:
13:38:10
TIME_FORMAT
Format nilai waktu ke dalam format yang ditentukan dengan TIME_FORMAT
.
Sintaks dasar:
TIME_FORMAT(time,format);
Format adalah kombinasi dari specifier. Anda dapat menemukan daftar semua penentu dan artinya dalam deskripsi fungsi DATE_FORMAT.
Misalnya, dengan menjalankan:
SELECT TIME_FORMAT('13:45:10','%h %i %s %p');
Anda mendapatkan output:
01 45 10 PM
TIME_TO_SEC
Untuk mengembalikan nilai waktu yang diubah menjadi detik, gunakan TIME_TO_SEC
.
Sintaks dasar:
TIME_TO_SEC(timevalue);
Misalnya, saat Anda menjalankan:
SELECT TIME_TO_SEC('13:48:05');
Hasilnya adalah:
49685
TIMEDIFF
Hitung perbedaan antara dua ekspresi waktu/datetime dengan TIMEDIFF
fungsi. Dalam hal ini, hasilnya selalu dalam nilai waktu.
Sintaks dasar:
TIMEDIFF(datetime1,datetime2);
Misalnya, saat Anda menjalankan:
SELECT TIMEDIFF('2021-01-15 11:10:17','2021-01-05 11:10:16');
Outputnya kembali:
240:00:01
TO_SECONDS
Untuk mengonversi ekspresi tanggal/waktu menjadi detik, gunakan fungsi TO_SECONDS
. Hasilnya adalah jumlah detik antara 0 dan tanggal/waktu yang ditentukan.
Sintaks dasar:
TO_SECONDS(datetime);
Misalnya, jika Anda menjalankan perintah:
SELECT TO_SECONDS('2021-01-21 08:10:17');
Hasilnya adalah:
63778435817
UTC_TIME
Kembalikan nilai waktu UTC saat ini dengan UTC_TIME
. Ini mengembalikan nilai waktu dalam format “HH:MM:SS” atau “HHMMSS”.
Sintaks dasar:
UTC_TIME();
Misalnya, jika Anda menjalankan:
SELECT UTC_TIME();
Anda mendapatkan hasil saat ini adalah:
19:45:21
Fungsi Terkait Stempel Waktu
CURRENT_TIMESTAMP atau LOCALTIMESTAMP
Untuk mengembalikan tanggal dan waktu saat ini, gunakan CURRENT_TIMESTAMP
atau LOCALTIMESTAMP
. Hasilnya ditampilkan dalam format “YYYY-MM-DD HH-MM-SS” atau “YYYYMMDDHHMMSS.uuuuuu”.
Sintaks dasar:
CURRENT_TIMESTAMP();
Misalnya, dengan menjalankan:
SELECT CURRENT_TIMESTAMP();
Hasil saat ini adalah:
2021-01-25 19:53:55
FROM_UNIXTIME
Mengembalikan ekspresi tanggal/waktu dari stempel waktu dalam format Unix dengan FROM_UNIXTIME
.
Sintaks dasar:
FROM_UNIXTIME(unix_timestamp);
Jika Anda menjalankan perintah tanpa argumen yang menentukan format, perintah tersebut akan mengembalikan hasilnya dalam format “YYYY-MM-DD jj:mm:ss” atau “YYYYMMDDhhmmss”.
Misalnya, jika Anda menjalankan:
SELECT FROM_UNIXTIME(1611231404);
Anda mendapatkan hasilnya:
2021-01-21 12:16:44
TIMESTAMP
Untuk mengembalikan ekspresi datetime dari tanggal atau nilai datetime, gunakan fungsi TIMESTAMP
. Jika Anda menambahkan dua argumen, output akan mengembalikan jumlah argumen.
Sintaks dasar:
TIMESTAMP(datetime);
TIMESTAMP(datetime,time);
Misalnya, ketika Anda menjalankan perintah:
SELECT TIMESTAMP('2021-01-13','30:50:00');
Output menunjukkan hasilnya:
2021-01-14 06:50:00
TIMESTAMPADD
Tambahkan nilai waktu ke ekspresi tanggal/datetime menggunakan TIMESTAMPADD
fungsi.
Sintaks dasar:
TIMESTAMPADD(unit,value,datetime);
Satuan bisa:
- FRAC_SECOND
- DUA
- MENIT
- JAM
- HARI
- MINGGU
- BULAN
- PEREMPAT
- TAHUN
Misalnya, perintah berikut menambahkan 3 hari ke tanggal yang ditentukan:
SELECT TIMESTAMPADD(DAY,3,'2021-01-18');
Oleh karena itu, output menunjukkan:
2021-01-21
TIMESTAMPDIFF
Untuk menghitung perbedaan antara dua ekspresi tanggal/waktu, gunakan TIMESTAMPDIFF
. Fungsi tersebut mengurangi satu nilai datetime dari yang lain dalam unit yang ditentukan.
Sintaks dasar:
TIMESTAMPDIFF(unit,datetime1,datetime2);
Anda dapat menemukan daftar dengan berbagai jenis unit, lihat daftar di bagian atas.
Misalnya, Anda dapat menghitung selisih antara dua tanggal berikut dalam hari:
SELECT TIMESTAMPDIFF(DAY,3,'2021-01-18');
Dimana hasilnya adalah:
13
UNIX_TIMESTAMP
Kembalikan stempel waktu Unix dari ekspresi tanggal/waktu dengan UNIX_TIMESTAMP
fungsi. Stempel waktu Unix mewakili detik antara waktu tanggal yang ditentukan dan “1970-01-01 00:00:00” UTC.
Sintaks dasar:
UNIX_TIMESTAMP(datetime);
Misalnya, menjalankan perintah berikut:
SELECT UNIX_TIMESTAMP('2021-01-25 17:33:00');
Memberikan hasil:
1611595980
UTC_TIMESTAMP
Kembalikan nilai tanggal dan waktu UTC saat ini dengan UTC_TIMESTAMP
. Ini mengembalikan nilai datetime dalam format “YYYY-MM-DD HH:MM:SS” atau “YYYYMMDDHHMMSS.uuuuuu”.
Sintaks dasar:
UTC_TIMESTAMP(datetime);
Misalnya, perintah:
SELECT UTC_TIMESTAMP();
Mengembalikan output dalam format yang sama seperti di bawah ini:
2021-01-25 23:18:06
Fungsi Terkait Hari/Minggu/Bulan/Tahun
HARI
Mengembalikan hari dalam sebulan dari ekspresi tanggal/tanggal-waktu tertentu dengan DAY
fungsi.
Sintaks dasar:
DAY(datetime);
Jika Anda menjalankan perintah di bawah ini:
SELECT DAY('2021-01-26 12:32:00');
Output mengembalikan hasil:
26
DAYNAME
Kembalikan nama hari kerja dari ekspresi tanggal/tanggal yang ditentukan menggunakan DAYNAME
fungsi.
Sintaks dasar:
DAYNAME(datetime);
Misalnya, ketika Anda menjalankan perintah:
SELECT DAYNAME('2021-01-26 12:32:00');
MySQL merespons dengan hasil:
Tuesday
DAYOFMONTH
Menampilkan hari dalam sebulan dari ekspresi tanggal/tanggal-waktu tertentu dengan DAYOFMONTH
.
Sintaks dasar:
DAYOFMONTH(datetime);
Misalnya, ketika Anda menjalankan perintah:
SELECT DAYOFMONTH('2021-01-26 12:32:00');
MySQL merespons dengan hasil:
26
DAYOFWEEK
Kembalikan hari dalam nilai numerik dari ekspresi tanggal/waktu yang ditentukan menggunakan DAYOFWEEK
.
Sintaks dasar:
DAYOFWEEK(datetime);
Jalankan perintah di bawah ini:
SELECT DAYOFWEEK('2021-01-26 12:32:00');
Memberikan tanggapan:
3
DAYOFYEAR
Mengembalikan hari dalam satu tahun dari ekspresi tanggal/waktu yang ditentukan menggunakan fungsi DAYOFYEAR
.
Sintaks dasar:
DAYOFYEAR(datetime);
Misalnya, ketika Anda menjalankan perintah:
SELECT DAYOFYEAR('2021-02-26 12:32:00');
Outputnya memberikan hasil:
57
FROM_DAYS
Mengembalikan ekspresi tanggal dari representasi numerik hari menggunakan fungsi FROM_DAYS
.
Sintaks dasar:
FROM_DAYS(number);
Misalnya, menjalankan:
SELECT FROM_DAYS(738181);
Prompt MySQL merespons dengan hasil:
2021-01-26
HARI_TERAKHIR
Kembalikan hari terakhir bulan itu dari tanggal/waktu yang ditentukan dengan LAST_DAY
fungsi.
Sintaks dasar:
LAST_DAY(date);
Misalnya, jika Anda menjalankan perintah berikut:
SELECT LAST_DAY('2021-01-26');
Outputnya merespons dengan:
31
BULAN
Menampilkan bulan (dalam nilai numerik) dari tanggal/waktu yang ditentukan dengan menggunakan MONTH
fungsi.
Sintaks dasar:
MONTH(date);
Misalnya, saat Anda menjalankan:
SELECT MONTH('2021-01-26');
MySQL merespons dengan:
1
MONTHNAME
Kembalikan nama bulan dari tanggal/waktu tertentu dengan MONTHNAME
fungsi.
Sintaks dasar:
MONTHNAME(date);
Jika Anda menjalankan perintah:
SELECT MONTH('2021-01-26');
Anda mendapatkan respons berikut:
January
PERIOD_ADD
Untuk menambahkan jumlah bulan tertentu ke suatu periode, gunakan PERIOD_ADD
fungsi.
Sintaks dasar:
PERIOD_ADD(period,number);
Periode didefinisikan dalam format YYMM atau YYYYMM, sedangkan angka adalah jumlah bulan yang ingin Anda tambahkan.
Misalnya:
SELECT PERIOD_ADD(202101, 5);
Memberikan hasil:
202106
PERIOD_DIFF
Menampilkan jumlah bulan antara dua periode dengan PERIOD_DIFF
.
Sintaks dasar:
PERIOD_DIFF(period1,period2);
Setiap periode harus dalam format YYMM atau YYYYMM.
Misalnya:
SELECT PERIOD_DIFF(202101, 202003);
Menghasilkan hasil:
10
PEREMPAT
Untuk mengembalikan seperempat tahun dari tanggal/waktu tertentu, gunakan fungsi QUARTER
.
Sintaks dasar:
QUARTER(date);
Misalnya dengan menjalankan perintah:
SELECT QUARTER('2021-01-26');
Outputnya merespons dengan:
1
TO_DAYS
Ubah ekspresi tanggal/waktu menjadi representasi numerik hari dengan TO_DAYS
.
Sintaks dasar:
TO_DAYS(datetime);
Misalnya, untuk perintah:
SELECT TO_DAYS('2021-01-26');
Hasilnya adalah :
738181
MINGGU
Untuk mengembalikan nomor minggu dari tanggal yang ditentukan, gunakan fungsi WEEK
.
Sintaks dasar:
WEEK(date);
Anda juga dapat menyertakan mode argumen, dalam hal ini sintaksnya adalah WEEK(date,mode);
.
Argumen mode menentukan dari hari mana minggu itu dimulai. Jika tidak ada argumen, gunakan 0
mode secara default.
Tabel berikut menjelaskan setiap mode:
Misalnya, jika Anda menjalankan:
SELECT WEEK('2021-01-26');
Outputnya merespons dengan:
4
HARI WEEK
Kembalikan hari kerja dari tanggal yang ditentukan dalam nilai numerik dengan WEEKDAY
. Setiap nomor mewakili salah satu hari kerja – Senin adalah 0
, Selasa adalah 1
, dan seterusnya.
Sintaks dasar:
WEEKDAY(date);
Misalnya, menjalankan perintah berikut:
SELECT WEEKDAY('2021-01-26');
Memberikan tanggapan:
1
WEEKOFYEAR
Untuk mengembalikan jumlah minggu dalam setahun, gunakan WEEKDAY
fungsi.
Sintaks dasar:
WEEKOFYEAR(date);
Misalnya, ketika Anda menjalankan perintah:
SELECT WEEKOFYEAR('2021-01-26');
Output menunjukkan hasilnya:
3
TAHUN
Kembalikan tahun dari tanggal yang ditentukan dengan YEAR
fungsi.
Sintaks dasar:
YEAR(date);
Jika Anda menjalankan perintah berikut:
SELECT YEAR('2021-01-26');
Anda mendapatkan hasilnya:
2021
MINGGU TAHUN
Kembalikan nomor tahun dan minggu dari tanggal yang ditentukan menggunakan YEARWEEK
fungsi.
Sintaks dasar:
YEARWEEK(date);
Anda dapat menambahkan mode
argumen ke sintaks dasar untuk menentukan hari dari mana minggu dimulai. Untuk melihat daftar mode dan artinya, lihat tabel di WEEK
fungsi.
Misalnya, ketika Anda menjalankan perintah:
SELECT YEARWEEK('2021-01-26');
Outputnya menampilkan:
202104