Bagian ini menjelaskan tentang fungsi yang dapat digunakan untuk memanipulasi nilai-nilai
temporal. Setiap tipe temporal memiliki rentang nilai yang valid, begitu juga "nol" yang bisa
digunakan ketika Anda ingin menentukan nilai tidak valid yang mana tidak bisa diwakilkan oleh
MySQL.
Argumen fsp (fractional seconds precision) digunakan untuk menentukan tingkat presisi nilai detik,
sehingga menjadi bentuk pecahan. Tingkat presisi hanya dibatasi dari 0 sampai 6 dibelakang koma.
Contoh:
SELECT NOW();
Output:
SELECT NOW(4),
SYSDATE(3);
Output:
Output:
Contoh:
SELECT
DAY('2017-02-21'),
DAYOFMONTH('2017-02-21'),
DAYNAME('2017-02-21');
Output:
Untuk nilai mode dengan maksud "4 hari atau lebih pada tahun ini", atau dengan kata lain
"perdebatan tentang jumlah hari dalam seminggu yang berada di antara desember-januari" telah
diatur sesuai ISO 8601: 1988:
Jika seminggu yang mengandung 1 Januari memiliki 4 atau lebih hari di tahun baru, maka itu
adalah minggu ke-1.
Jika tidak, maka itu adalah minggu terakhir dari tahun sebelumnya, dan minggu depannya
adalah minggu ke-1.
Sementara itu Achmad Solichin menjelaskan bahwa, fungsi ini digunakan untuk mendapatkan
urutan minggu (integer) dari suatu tanggal yang diberikan dalam setahun.
Contoh:
SELECT WEEK('2008-02-20'),
WEEK('2008-02-20',0),
WEEK('2008-02-20',1),
WEEK('2008-12-31',1);
Output:
Fungsi WEEK()
SELECT WEEK(NOW()),
WEEK(NOW(),0),
WEEK(NOW(),1),
WEEK('2008-12-31',2);
Output:
5. WEEKDAY(date)
Mengembalikan nilai berupa index hari kerja untuk tanggal argumen, dimana 0 = Senin, 1 =
Selasa, ...s/d. 6 = Minggu.
Contoh:
SELECT WEEKDAY(NOW()),
WEEKDAY('2017-2-22');
Output:
WEEKDAY(date)
6. WEEKOFYEAR(date)
Fungsi ini akan mengembalikan urutan minggu pada tanggal argumen, dengan rentang 1 sampai
53. WEEKOFYEAR() adalah fungsi yang ekuivalen(setara) dengan WEEK(date,3).
Contoh:
SELECT WEEKOFYEAR(NOW());
Output:
WEEKOFYEAR(date)
Jadi memang benar saat ini NOW(), sudah masuk pada minggu ke-8. Berikut adalah detail
ulasannya:
Penghitungan urutan minggu secara manual untuk saat ini NOW() bertepatan tanggal 22-Feb-2017
7. YEAR(date)
Fungsi ini akan mengembalikan nilai tahun pada tanggal argumen, berkisar antara 1000-9999, atau
0 jika itu diisi dengan nol.
Contoh:
SELECT YEAR('1987-01-01'),
YEAR(NOW());
Output:
YEAR(date)
8. HOUR(time)
Fungsi ini akan mengembalikan nilai waktu berupa jam. Rentang nilai yang dikembalikan berkisar 0
sampai 23 time-of-day (jumlah jam dalam sehari). Namun, rentang waktu sebenarnya jauh lebih
besar dari itu (tidak dibatasi oleh hari), sehingga nilai jam dapat dikembalikan lebih besar dari 23.
Sementara itu Achmad Solichin menjelaskan bahwa, fungsi ini digunakan untuk mendapatkan
bilangan jam dari suatu parameter waktu yang diberikan.
Contoh:
SELECT HOUR(NOW()),
-- Fungsi NOW() saya running saat pukul 11.19 PM
HOUR('23:59:03'),
HOUR('272:59:59');
Output:
HOUR(time)
9. MINUTE(time)
Fungsi ini akan mengembalikan nilai waktu berupa menit, dalam rentang 0 sampai 59.
Sementara itu Achmad Solichin menjelaskan bahwa, fungsi ini digunakan untuk mendapatkan
bilangan menit dari suatu parameter waktu yang diberikan.
Contoh:
SELECT MINUTE('2008-02-03 10:05:03'),
MINUTE(NOW());
-- Fungsi NOW() saya running saat waktu
-- menunjukan pukul 11.25 PM.
Output:
MINUTE(time)
10. SECOND(time)
Fungsi ini akan mengembalikan nilai berupa detik, berkisar antara 0 sampai 59.
Sementara itu Achmad Solichin menjelaskan bahwa, fungsi ini digunakan untuk mendapatkan
bilangan detik dari suatu waktu yang diberikan.
Contoh:
SELECT SECOND('10:05:03'),
SECOND(NOW());
-- Fungsi NOW() saya running saat waktu
-- menunjukan pukul 11.33.? PM.
Output:
SECOND(time)
Keyword INTERVAL dan specifier unit (unit penunjuk) tidak bersifat case sensitive.
Tabel berikut menunjukan bagaimana format yang diharapkan oleh argumen expr untuk setiap nilai
unit.
Unit Value Expected expr Format
MICROSECOND MICROSECONDS
SECOND SECONDS
MINUTE MINUTES
HOUR HOURS
DAY DAYS
WEEK WEEKS
MONTH MONTHS
QUARTER QUARTERS
YEAR YEARS
SECOND_MICROSECOND 'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND 'MINUTES:SECONDS.MICROSECONDS'
MINUTE_SECOND 'MINUTES:SECONDS'
HOUR_MICROSECOND 'HOURS:MINUTES:SECONDS.MICROSECONDS'
HOUR_SECOND 'HOURS:MINUTES:SECONDS'
HOUR_MINUTE 'HOURS:MINUTES'
'DAYS
DAY_MICROSECOND
HOURS:MINUTES:SECONDS.MICROSECONDS'
DAY_SECOND 'DAYS HOURS:MINUTES:SECONDS'
DAY_MINUTE 'DAYS HOURS:MINUTES'
DAY_HOUR 'DAYS HOURS'
YEAR_MONTH 'YEARS-MONTHS'
Jika Anda menambahkan atau mengurangi nilai tanggal yang berisi paruh waktu, maka hasilnya
otomatis akan dikonversi ke nilai datetime.
Contoh:
SELECT DATE_ADD('2013-01-02', INTERVAL 1 DAY),
DATE_ADD('2013-01-02', INTERVAL 1 HOUR);
Output:
Output:
Jika Anda menambahkan MONTH, YEAR_MONTH, atau YEAR dan tanggal yang dihasilkan
memiliki jumlah hari maksimum untuk bulan baru, maka hari akan diatur ke maksimum di bulan
baru.
Contoh:
SELECT DATE_ADD('2009-01-30', INTERVAL 1 MONTH);
Output:
Contoh:
SELECT DATE_ADD('2008-01-02', INTERVAL 31 DAY),
ADDDATE('2008-01-02', INTERVAL 31 DAY);
Output:
Ketika fungsi ADDDATE() dipanggil menggunakan bentuk argumen keduanya format hari, maka
MySQL memperlakukan sebagai integer jumlah hari yang akan ditambahkan ke expr.
SELECT ADDDATE('2008-01-02', 31);
Output:
ADDDATE(expr,days)
Output:
Ketika fungsi SUBDATE() dipanggil menggunakan bentuk argumen keduanya format hari, maka
MySQL memperlakukan sebagai integer jumlah hari yang akan ditambahkan ke expr.
SELECT SUBDATE('2008-01-02 12:00:00', 31);
Output:
SUBDATE(expr,days)
13. DATE_FORMAT(date,format)
Fungsi ini digunakan untuk memformat nilai tanggal sesuai dengan format string.
Specifier berkut dapat digunakan dalam format string. Karakter ini % diperlukan sebelum format
karakter specifier.
Sementara itu Achmad Solichin menjelaskan bahwa, fungsi ini digunakan untuk mem-format
tampilan tanggal.
Specifier Description
%a Nama hari disingkat (Sun..Sat)
%b Nama bulan disingkat (Jan..Dec)
%c Bulan, numerik (0..12)
%D Hari dalam sebulan dengan suffix bahasa Inggris (0th, 1st, 2nd, 3rd, …)
%d Hari dalam sebulan, numerik (00..31)
%e Hari dalam sebulan, numerik (0..31)
%f Mikrodetik (000000..999999)
%H Jam (00..23)
%h Jam (01..12)
%I Jam (01..12)
%i Menit, numerik (00..59)
%j Hari dalam setahun (001..366)
%k Jam (0..23)
%l Jam (1..12)
%M Nama bulan (January..December)
%m Bulan, numerik (00..12)
%p AM atau PM
%r Waktu, 12-jam (hh:mm:ss followed by AM or PM)
%S Detik (00..59)
%s Detik (00..59)
%T Waktu, 14-jam (hh:mm:ss)
%U Seminggu (00..53), dimana hari Minggu sebagai hari pertamanya; WEEK()
mode 0
%u Seminggu (00..53), dimana hari Senin sebagai hari pertamanya; WEEK()
mode 1
%V Seminggu (01..53), dimana hari Minggu sebagai hari pertamanya; WEEK()
mode 2, digunakan dengan %X
%v Seminggu (01..53), dimana hari Senin sebagai hari pertamanya; WEEK()
mode 3, digunakan dengan %X
%W Nama hari dalam seminggu (Sunday..Saturday)
%w Hari dalam seminggu (0=Sunday..6=Saturday)
%X Tahun untuk mingguan, dimana Minggu sebagai hari pertamanya, numerik, 4
digit, digunakan dengan %V
%x Tahun untuk mingguan, dimana Senin sebagai hari pertamanya, numerik, 4
digit, digunakan dengan %V
%Y Tahun, numerik, 4 digit
%y Tahun, numerik, 2 digit
%% Literal karakter %
%x X, untuk setiap "X" yang tidak tercantum dalam daftar diatas.
Rentang untuk specifier bulan dan hari dimulai dengan nol karena fakta bahwa MySQL mengijinkan
penyimpanan tanggal secara tidak lengkap seperti '2014-00-00'.
Bahasa yang digunakan untuk penamaan hari dan bulan disingkat, ini dikendalikan oleh nilai
variabel sistem Ic_time_names.
Untuk specifier %U, %u, %V, dan %v, Anda bisa melihatnya pada penjelasan tentang fungsi
WEEK(). Penggunaan mode akan mempengaruhi penomeran mingguan.
DATE_FORMAT() mengembalikan sebuah string dengan set karakter dan pemeriksaan yang
dilakukan oleh character_set_connection dan collation_connection, sehingga dapat mengembalikan
nama bulan dan hari yang berisi karakter non-ASCII.
Contoh:
SELECT DATE_FORMAT (now(), '%d-%M-%Y %H:%i:%s') AS Contoh1,
DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y') AS Contoh2,
DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s') AS Contoh3,
DATE_FORMAT('1900-10-04 22:23:00', '%D %y %a %d %m %b %j') AS Contoh4,
DATE_FORMAT('1997-10-04 22:23:00', '%H %k %I %r %T %S %w') AS Contoh5,
DATE_FORMAT('1999-01-01', '%X %V') AS Contoh6,
DATE_FORMAT('2006-06-00', '%d') AS Contoh7;
Output:
DATE_FORMAT(date,format)