MariaDB memiliki HOUR()
fungsi yang mengekstrak bagian jam dari nilai waktu. MariaDB juga memiliki EXTRACT()
fungsi yang juga dapat mengekstrak bagian jam dari nilai waktu.
Namun, fungsi-fungsi ini tidak selalu mengembalikan hasil yang sama.
Baca terus untuk melihat perbedaan antara HOUR()
dan EXTRACT(HOUR FROM ...)
di MariaDB.
Perbedaan
HOUR()
dan EXTRACT(HOUR FROM ...)
keduanya mengembalikan nilai yang sama ketika ekspresi waktu adalah ekspresi waktu-hari. Artinya, jika bagian jam berada di antara 0
dan 23
, lalu mereka mengembalikan hasil yang sama.
Perbedaannya terlihat ketika bagian jam lebih besar dari 23
.
TIME
nilai bisa dalam rentang '-838:59:59.999999'
ke '838:59:59.999999'
, tetapi nilai waktu hanya boleh berada di antara 0
dan 23
.
Jika ekspresi waktu berada di luar 0
dan 23
jangkauan:
HOUR()
mengembalikan bagian jam aktual dari ekspresi (asalkan dalam rentang'-838:59:59.999999'
ke'838:59:59.999999'
– jika di luar rentang ini, ia mengembalikan838
)EXTRACT(HOUR FROM ...)
mengembalikan nilai antara0
dan23
. Jika jam berada di luar rentang ini,EXTRACT()
akan mengulangi melalui0
dan23
sebanyak yang diperlukan untuk mengembalikan nilai antara0
dan23
.
Contoh
Berikut ini contoh untuk didemonstrasikan.
SELECT
HOUR('24:00:00'),
EXTRACT(HOUR FROM '24:00:00');
Hasil:
+------------------+-------------------------------+ | HOUR('24:00:00') | EXTRACT(HOUR FROM '24:00:00') | +------------------+-------------------------------+ | 24 | 0 | +------------------+-------------------------------+
HOUR()
fungsi mengembalikan jam aktual yang diberikan, sedangkan EXTRACT()
mengembalikan 0
. Ini karena 24
lebih tinggi dari 23
, yang merupakan nilai tertinggi EXTRACT()
akan kembali untuk porsi jam. Dalam hal ini, EXTRACT()
mulai menghitung lagi, mulai dari 0
.
Ini akan terus melakukan ini sebanyak yang diperlukan, sehingga hasilnya selalu di antara 0
dan 23
.
Berikut contoh lain dengan bagian jam yang jauh lebih besar:
SELECT
HOUR('742:00:00'),
EXTRACT(HOUR FROM '742:00:00');
Hasil:
+-------------------+--------------------------------+ | HOUR('742:00:00') | EXTRACT(HOUR FROM '742:00:00') | +-------------------+--------------------------------+ | 742 | 22 | +-------------------+--------------------------------+