07 May 2018

Query Mysql untuk Menghitung Total Waktu (SUM TIME)

Query SUM adalah bagian dari query DML(Data Manaipulation Language) yaitu perintah SELECT yang berfungsi untuk menghitung atau mengetahui jumlah dari beberapa record. Hasil dari query ini berupa angka jumlah. Jika kita memiliki record 1,2,3,4 maka jika kita ingin mengetahui jumlahnya, kita dapat menggunakan query SELECT SUM(nama_field) as Jumlah FROM nama_tabel. Dari query tersebut akan dihasilkan angka 10 yang merupakan jumlah dari 1+2+3+4=10.
Namun bagaimana jika ingin menjumlahkan angka dalam betuk waktu atau TIME? Misalnya kita ingin menjumlahkan total keterlambatan atau total lama waktu kerja dalam 1 bulan.
Untuk mengetahui jumlah waktu maka ada 2 perintah query yang bisa kita gunakan. Kedua query tersebut tetap akan menggunakan perintah SUM untuk menjumlahkan, namun ada tambahan fungsi lain yang sudah disediakan oleh Mysql. Fungsi tersebut adalah:


  1. TIME_TO_SEC dan 
  2. SEC_TO_TIME


Fungsi TIME_TO_SEC


Fungsi TIME_TO_SEC ini dapat digunakan jika kita ingin mengubah waktu atau CONVERT TIME ke dalam bentuk detik atau second. Misalkan kita memiliki waktu 01:00:00 atau 1 jam 0 menit 0 detik, maka untuk mengubah ke dalam bentuk atau satuan detik atau second kita dapat menggunakan query sbb:


SELECT TIME_TO_SEC('01:00:00')

Dari query tersebut akan dihasilkan nilai berupa angka 3600 dimana angka tersebut merupakan jumlah detik dalam 1 jam. 1 jam=60 menit=3600 detik.


Fungsi SEC_TO_TIME
Fungsi SEC_TO_TIME ini dapat digunakan jika kita ingin mengubah waktu atau CONVERT TIME dari detik atau second ke dalam satuan jam atau hour. Misalkan kita memiliki waktu 3600 detik, maka untuk mengubah bentuk detik atau second tersebut ke dalam bentuk jam kita dapat menggunakan query sbb:

SELECT SEC_TO_TIME(3600)

Dari query tersebut akan dihasilkan 01:00:00 karena 3600 detik=60 menit=1 jam.


Total Waktu
Selanjutnya bagaimana untuk menghitung total waktu dari beberapa record. Misalnya kita memiliki record sebagai berikut:


No
Tanggal
Telat
12018-05-0700:01:00
22018-05-0801:00:00
32018-05-0900:30:00
42018-05-1001:30:00
52018-05-1100:30:10

Dari data di atas kita ingin menghitung berapa total keterlambatan. Maka kita bisa menggunakan perintah SUM dengan menambahkan fungsi yang sudah dijelaskan di atas.
Jika kita ingin mengetahui berapa detik total keterlambatan maka dapat digunakan query sbb;

SELECT SUM(TIME_TO_SEC(nama_field)) as Total FROM nama_tabel
SELECT SUM(TIME_TO_SEC(telat)) as Total FROM nama_tabel

Dari query di atas maka akan dihasilkan total detik keterlambatan, dimana akan dihasilkan angka 12670 dalam satuan detik.

Namun jika kita ingin menampilkan dalam satuan jam maka dapat digunakan fungsi SEC_TO_TIME dimana kita akan mengkonversi nilai detik ke dalam bentuk jam. Sehingga langkah awal kita tetap akan menghitung total detiknya terlebih dahulu baru kemudian kita convert ke dalam bentuk jam, dengan query sbb:

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(nama_field))) as Total FROM nama_tabel
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(telat))) as Total FROM nama_tabel


Dari query di atas maka akan dihasilkan total detik keterlambatan yang sudah di konvert ke dalam bentuk jam, dimana akan dihasilkan 03:31:10.

Demikian semoga bermanfaat.
Read more ...
 
>