Skip to main content
  1. Posts/

MySQL - Date and Time Functions

·5 mins·
mysql mysql
Table of Contents

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

Related

Benchmark MySQL Query Menggunakan mysqlslap
·2 mins
mysql mysql
Cara Menggunakan Indexes di MySQL
·9 mins
mysql mysql
Setting Up InnoDB Memcached Plugin in MySQL
·3 mins
mysql mysql
Speed Up Query Joins MariaDB
·1 min
mysql mysql
Optimizing MySQL Using Query Cache
·4 mins
mysql mysql
Cara Export dan Import User MySQL
·1 min
mysql mysql