MySQL - Date and Time Functions

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