Halooo semuanya, pada postingan kali ini kita akan coba menghitung selisih antara dua waktu dengan tipe data timestamp di PostgreSQL.
Pada kasus ini, kita akan coba menghitung lama waktu dari sebuah pembangunan gedung.
Kita mempunyai sebuah tabel gedung dengan kolom yang berisi nama_gedung (varchar), waktu_mulai (timestamp) dan waktu_berakhir (timestamp).
Berikut isi data dari tabel tersebut
nama_gedung | waktu_mulai | waktu_berakhir |
---|---|---|
Gedung A | 2021-01-01 09:30:00 | 2022-01-20 10:25:00 |
Gedung B | 2022-01-20 11:00:00 | 2022-02-20 12:30:00 |
Gedung C | 2022-01-20 09:25:00 | 2022-01-20 15:30:00 |
Cara 1 : Menampilkan dalam Hari, Jam, Menit dan Detik
Pada cara pertama kita dapat menampilkan selisih dari dua waktu menjadi hari, jam, menit dan detik
SELECT
*
waktu_berakhir - waktu_mulai AS selisih
FROM gedung;
Hasilnya menjadi seperti berikut :
nama_gedung | waktu_mulai | waktu_berakhir | selisih |
---|---|---|---|
Gedung A | 2021-01-01 09:30:00 | 2022-01-20 10:25:00 | 31 days 01:30:00 |
Gedung B | 2022-01-20 11:00:00 | 2022-02-20 12:30:00 | 06:05:00 |
Gedung C | 2022-01-20 09:25:00 | 2022-01-20 15:30:00 | 384 days 00:55:00 |
Cara 2 : Menampilkan dalam Tahun, Bulan, Hari, Jam, Menit dan Detik
Pada cara kedua kita dapat menampilkannya hingga menampilkan tahun dengan menggunakan fungsi AGE().
SELECT
*,
AGE(waktu_berakhir,waktu_mulai) AS selisih
FROM gedung;
Hasilnya :
nama_gedung | waktu_mulai | waktu_berakhir | selisih |
---|---|---|---|
Gedung A | 2021-01-01 09:30:00 | 2022-01-20 10:25:00 | 1 mon 01:30:00 |
Gedung B | 2022-01-20 11:00:00 | 2022-02-20 12:30:00 | 06:05:00 |
Gedung C | 2022-01-20 09:25:00 | 2022-01-20 15:30:00 | 1 year 19 days 00:55:00 |
Cara 3 : Menampilkan dalam Detik
Pada cara ini kita akan menampilkan selisihnya dalam satuan waktu detik
SELECT
*,
EXTRACT(EPOCH FROM (waktu_berakhir-waktu_mulai)) AS selisih
FROM gedung;
Hasilnya :
nama_gedung | waktu_mulai | waktu_berakhir | selisih |
---|---|---|---|
Gedung A | 2021-01-01 09:30:00 | 2022-01-20 10:25:00 | 2683800 |
Gedung B | 2022-01-20 11:00:00 | 2022-02-20 12:30:00 | 21900 |
Gedung C | 2022-01-20 09:25:00 | 2022-01-20 15:30:00 | 33180900 |
Oke sekian untuk postingan kali ini, semoga bermanfaat yaaa 🙂