MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

HOUR() vs EXTRACT(HOUR ...) di MariaDB:Apa Bedanya?

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 mengembalikan 838 )
  • EXTRACT(HOUR FROM ...) mengembalikan nilai antara 0 dan 23 . Jika jam berada di luar rentang ini, EXTRACT() akan mengulangi melalui 0 dan 23 sebanyak yang diperlukan untuk mengembalikan nilai antara 0 dan 23 .

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 |
+-------------------+--------------------------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 Cara untuk Memisahkan Jam, Menit, dan Detik dari Nilai Waktu di MariaDB

  2. Cara Menempatkan Angka dengan Nol Awal di MariaDB

  3. Bagaimana OCTET_LENGTH() Bekerja di MariaDB

  4. Pemulihan Bencana Cloud untuk MariaDB dan MySQL

  5. Bagaimana EXPORT_SET() Bekerja di MariaDB