Pada panduan berikut akan membahas beberapa fungsi yang dapat digunakan untuk memanipulasi atau mendeskripsikan waktu dan tanggal di MySQL.
Berikut adalah contoh query untuk menampilkan data 1 tahun yang lalu pada tabel salaries
SELECT * FROM salaries WHERE from_date = DATE_SUB(CURDATE(),INTERVAL 1 YEAR);
ADDDATE()
Syntax
ADDDATE(date,INTERVAL expr unit), ADDDATE(date,days)
Fungsi ADDDATE()
adalah sinonim dari DATE_ADD()
, digunakan untuk menambahkan nilai tanggal sesuai INTERVAL
yang ditentukan.
SELECT ADDDATE('2024-01-27',INTERVAL 1 DAY)
Contoh lain
mysql> SELECT DATE_ADD('2008-01-02', INTERVAL 31 DAY);
-> '2008-02-02'
mysql> SELECT ADDDATE('2008-01-02', INTERVAL 31 DAY);
-> '2008-02-02'
Ketika dipanggil tanpa menggunakan INTERVAL
, MySQL akan memperlakukannya sebagai bilangan bulat dari jumlah hari.
mysql> SELECT ADDDATE('2008-01-02', 31);
-> '2008-02-02'
ADDTIME()
Fungsi ini digunakan untuk menambahkan waktu.
Syntax
ADDTIME(expr1,expr2)
Examples
mysql> SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');
-> '2008-01-02 01:01:01.000001'
mysql> SELECT ADDTIME('01:00:00.999999', '02:00:00.999998');
-> '03:00:01.999997'
CONVERT_TZ()
Fungsi CONVERT_TZ()
mengonversi nilai datetime dari zona waktu pertama dan ke zona waktu lain.
Syntax
CONVERT_TZ(dt,from_tz,to_tz)
Examples
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
-> '2004-01-01 13:00:00'
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
-> '2004-01-01 22:00:00'
CURDATE()
Fungsi CURDATE()
digunakan untuk menampilkan tanggal saat ini dalam format ‘YYYY-MM-DD’ atau YYYYMMDD.
Syntax
CURDATE()
Examples
mysql> SELECT CURDATE();
-> '2008-06-13'
mysql> SELECT CURDATE() + 0;
-> 20080613
CURRENT_DATE()
Untuk menampilkan tanggal sekarang. Ini adalah sinonim dari CURDATE()
Syntax
CURRENT_DATE, CURRENT_DATE()
Examples
mysql> SELECT CURRENT_DATE();
-> '2008-06-13'
CURRENT_TIME()
Untuk menampilkan waktu sekarang. Ini adalah sinonim dari CURTIME()
Syntax
CURRENT_TIME, CURRENT_TIME([fsp])
Examples
mysql> SELECT CURRENT_TIME();
+-----------+
| CURTIME() |
+-----------+
| 07:51:14 |
+-----------+
CURRENT_TIMESTAMP()
Untuk menampilkan tanggal dan waktu sekarang. Ini adalah sinonim dari NOW()
Syntax
CURRENT_TIMESTAMP, CURRENT_TIMESTAMP([fsp])
Examples
mysql> SELECT CURRENT_TIMESTAMP();
+---------------------+
| CURRENT_TIMESTAMP() |
+---------------------+
| 2024-01-29 07:56:34 |
+---------------------+
DATE()
Untuk menampilkan nilai DATE dalam format ‘YYYY-MM-DD’.
Examples
mysql> SELECT DATE('2003-12-31 01:02:03');
-> '2003-12-31'
DATE_FORMAT()
Untuk memformat nilai tanggal sesuai dengan string format yang ditentukan.
Syntax
DATE_FORMAT(date,format)
Examples
mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y');
-> 'Sunday October 2009'
mysql> SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s');
-> '22:23:00'
mysql> SELECT DATE_FORMAT('1900-10-04 22:23:00',
-> '%D %y %a %d %m %b %j');
-> '4th 00 Thu 04 10 Oct 277'
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00',
-> '%H %k %I %r %T %S %w');
-> '22 22 10 10:23:00 PM 22:23:00 00 6'
mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V');
-> '1998 52'
mysql> SELECT DATE_FORMAT('2006-06-00', '%d');
-> '00'
Detail string format ada di DATE_FORMAT
DATEDIFF()
Fungsi DATEDIFF()
akan mengembalikan nilai expr1 - expr2 yang bisa dinyatakan sebagai tanggal atau tanggal dan waktu untuk mengetahui jumlah hari yang telah berlalu.
Syntax
DATEDIFF(expr1,expr2)
Examples
mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
-> 1
mysql> SELECT DATEDIFF(NOW(),'2023-12-30');
-> 32
DAY()
DAY()
merupakan sinonim dari DAYOFMONTH()
yang berfungsi untuk menampilkan hari dalam rentang 1 - 31 dengan format tanggal YYYY-MM-DD
.
Syntax
DAY(date)
Examples
mysql> SELECT DAY(NOW());
-> 31
mysql> SELECT DAYOFMONTH('2007-02-03');
-> 3
DAYNAME()
Menampilkan nama hari untuk tanggal.
Syntax
DAYNAME(date)
Examples
mysql> SELECT DAYNAME(NOW());
-> 'Wednesday'
mysql> SELECT DAYNAME('2007-02-03');
-> 'Saturday'
DAYOFWEEK()
Untuk menampilkan weekday index untuk tanggal (1 = Sunday, 2 = Monday, …, 7 =Saturday). Nilai dari index ini sesuai dengan standar ODBC.
Syntax
DAYOFWEEK(date)
Examples
mysql> SELECT DAYOFWEEK('2007-02-03');
-> 7
DAYOFYEAR()
Menampilkan jumlah hari dalam setahun atau dalam rentang 1 hingga 366.
Syntax
DAYOFYEAR(date)
Examples
mysql> SELECT DAYOFYEAR('2007-02-03');
-> 34
EXTRACT()
Fungsi EXTRACT()
digunakan untuk mengekstrak bagian dari tanggal sesuai unit
yang ditentukan. Untuk informasi tentang argumen unit
ada di temporal-intervals
Syntax
EXTRACT(unit FROM date)
Examples
mysql> SELECT EXTRACT(YEAR FROM '2019-07-02');
-> 2019
mysql> SELECT EXTRACT(YEAR_MONTH FROM '2019-07-02 01:02:03');
-> 201907
mysql> SELECT EXTRACT(DAY_MINUTE FROM '2019-07-02 01:02:03');
-> 20102
mysql> SELECT EXTRACT(MICROSECOND FROM '2003-01-02 10:30:00.000123');
-> 123
FROM_UNIXTIME()
Fungsi ini mengembalikan representasi dari unix_timestamp
ke format datetime atau nilai string.
Syntax
FROM_UNIXTIME(unix_timestamp[,format])
Examples
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());
-> '2024-01-31 19:22:33'
mysql> SELECT FROM_UNIXTIME(1447430881);
-> '2015-11-13 10:08:01'
mysql> SELECT FROM_UNIXTIME(1447430881) + 0;
-> 20151113100801
mysql> SELECT FROM_UNIXTIME(1447430881,'%Y %D %M %h:%i:%s %x');
-> '2015 13th November 10:08:01 2015'
GET_FORMAT()
Fungsi ini jika dikombinasikan dengan fungsi DATE_FORMAT()
dan STR_TO_DATE()
akan berguna untuk menampilkan tanggal dan waktu sesuai format yang ditentukan.
Syntax
GET_FORMAT({DATE|TIME|DATETIME}, {'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL'})
Examples
mysql> SELECT DATE_FORMAT(NOW(),GET_FORMAT(DATETIME,'JIS'));
-> 2024-01-31 19:57:32
mysql> SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR'));
-> '03.10.2003'
mysql> SELECT STR_TO_DATE('10.31.2003',GET_FORMAT(DATE,'USA'));
-> '2003-10-31'
HOUR()
Untuk mengekstrak jam pada waktu yang telah ditentukan.
Syntax
HOUR(time)
Examples
mysql> SELECT HOUR('10:05:03');
-> 10
mysql> SELECT HOUR('272:59:59');
-> 272
MINUTE()
Untuk mengekstrak menit dalam rentang 0 hingga 59 pada waktu yang telah ditentukan.
Syntax
MINUTE(time)
Examples
mysql> SELECT MINUTE('2008-02-03 10:05:03');
-> 5
SECOND()
Untuk mengekstrak detik dalam rentang 0 hinggal 59 pada waktu yang telah ditentukan.
Syntax
SECOND(time)
Examples
mysql> SELECT SECOND('10:05:03');
-> 3
LAST_DAY()
Untuk menampilkan hari terakhir setiap bulan pada tanggal yang telah ditentukan.
Syntax
LAST_DAY(date)
Examples
mysql> SELECT LAST_DAY('2003-02-05');
-> '2003-02-28'
mysql> SELECT LAST_DAY('2004-02-05');
-> '2004-02-29'
mysql> SELECT LAST_DAY('2004-01-01 01:01:01');
-> '2004-01-31'
mysql> SELECT LAST_DAY('2003-03-32');
-> NULL
MONTH()
Untuk mengekstrak bulan dalam rentang 1 hingga 12 pada tanggal yang telah ditentukan.
Syntax
MONTH(date)
Examples
mysql> SELECT MONTH('2008-02-03');
-> 2
MONTHNAME()
Menampilkan nama bulan untuk tanggal yang telah ditentukan.
Syntax
MONTHNAME(date)
Examples
mysql> SELECT MONTHNAME('2008-02-03');
-> 'February'
NOW()
Untuk menampilkan waktu dan tanggal saat ini dalam format YYYY-MM-DD hh:mm:ss
atau YYYYMMDDhhmmss
bergantung pada apakah fungsi tersebut digunakan.
Syntax
NOW([fsp])
Examples
mysql> SELECT NOW();
-> '2007-12-15 23:50:26'
mysql> SELECT NOW() + 0;
-> 20071215235026.000000
PERIOD_ADD()
Untuk menambahkan bulan (N) ke periode (P) dalam format YYMM
atau YYYYMM
Syntax
PERIOD_ADD(P,N)
Examples
mysql> SELECT PERIOD_ADD(200801,2);
-> 200803
PERIOD_DIFF()
Untuk menghitung jumlah bulan antara periode (P1) dan (P2) dalam format YYMM
atau YYYYMM
Syntax
PERIOD_DIFF(P1,P2)
Examples
mysql> SELECT PERIOD_DIFF(200802,200703);
-> 11