MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

HOUR () so với EXTRACT (HOUR…) ở MariaDB:Sự khác biệt là gì?

MariaDB có HOUR() hàm trích xuất phần giờ từ một giá trị thời gian. MariaDB cũng có EXTRACT() chức năng này cũng có thể trích xuất phần giờ từ một giá trị thời gian.

Tuy nhiên, không phải lúc nào các hàm này cũng trả về cùng một kết quả.

Đọc tiếp để biết sự khác biệt giữa HOUR()EXTRACT(HOUR FROM ...) trong MariaDB.

Sự khác biệt

HOUR()EXTRACT(HOUR FROM ...) cả hai đều trả về cùng một giá trị khi biểu thức thời gian là biểu thức thời gian trong ngày. Nghĩa là, nếu phần giờ nằm ​​giữa 023 , sau đó chúng trả về cùng một kết quả.

Sự khác biệt thể hiện khi phần giờ lớn hơn 23 .

TIME giá trị có thể nằm trong khoảng '-838:59:59.999999' thành '838:59:59.999999' , nhưng giá trị thời gian trong ngày chỉ có thể nằm trong khoảng 023 .

Nếu biểu thức thời gian nằm ngoài 023 phạm vi:

  • HOUR() trả về phần giờ thực tế từ biểu thức (miễn là nó nằm trong phạm vi '-838:59:59.999999' thành '838:59:59.999999' - nếu nằm ngoài phạm vi này, nó trả về 838 )
  • EXTRACT(HOUR FROM ...) trả về giá trị giữa 023 . Nếu giờ nằm ​​ngoài phạm vi này, EXTRACT() sẽ lặp qua 023 bao nhiêu lần nếu cần để trả về giá trị giữa 023 .

Ví dụ

Đây là một ví dụ để chứng minh.

SELECT 
    HOUR('24:00:00'),
    EXTRACT(HOUR FROM '24:00:00');

Kết quả:

+------------------+-------------------------------+
| HOUR('24:00:00') | EXTRACT(HOUR FROM '24:00:00') |
+------------------+-------------------------------+
|               24 |                             0 |
+------------------+-------------------------------+

HOUR() hàm trả về giờ thực tế đã được cung cấp, trong khi EXTRACT() trả về 0 . Điều này là do 24 cao hơn 23 , là giá trị cao nhất EXTRACT() sẽ trở lại cho phần giờ. Trong trường hợp này, EXTRACT() bắt đầu đếm lại, bắt đầu từ 0 .

Nó sẽ tiếp tục làm điều này nhiều lần nếu cần, để kết quả luôn nằm trong khoảng 023 .

Đây là một ví dụ khác có phần giờ lớn hơn nhiều:

SELECT 
    HOUR('742:00:00'),
    EXTRACT(HOUR FROM '742:00:00');

Kết quả:

+-------------------+--------------------------------+
| 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. Laravel:Khóa được chỉ định quá dài; độ dài khóa tối đa là 767 byte

  2. Cách xác định các vấn đề về hiệu suất MySQL với các truy vấn chậm

  3. 4 cách để tìm hàng có chứa chữ hoa trong MariaDB

  4. Cách cài đặt, bảo mật và điều chỉnh hiệu suất của máy chủ cơ sở dữ liệu MariaDB

  5. Cách WEIGHT_STRING () hoạt động trong MariaDB