Trong MariaDB, MAKETIME()
là một hàm ngày và giờ được tích hợp sẵn trả về giá trị thời gian, dựa trên giờ, phút và giây được cung cấp dưới dạng đối số.
Cú pháp
Cú pháp như sau:
MAKETIME(hour,minute,second)
Ví dụ
Đây là một ví dụ:
SELECT MAKETIME(08, 30, 45);
Kết quả:
+----------------------+ | MAKETIME(08, 30, 45) | +----------------------+ | 08:30:45 | +----------------------+
Và một cái khác:
SELECT MAKETIME(23, 8, 1);
Kết quả:
+--------------------+ | MAKETIME(23, 8, 1) | +--------------------+ | 23:08:01 | +--------------------+
Dải
Nếu hour
đối số nằm ngoài phạm vi -838
thành 838
, giá trị bị cắt bớt với một cảnh báo.
Nếu minute
hoặc second
các đối số nằm ngoài phạm vi 0
thành 59
, kết quả là null
và một cảnh báo được hiển thị (tài liệu MariaDB nói rằng phạm vi là 0
thành 60
, nhưng đây không phải là trường hợp trong các thử nghiệm của tôi. Hơn nữa, tài liệu MariaDB cũng nói rằng phạm vi cho các giá trị thời gian MariaDB là '-838:59:59.999999'
thành '838:59:59.999999'
).
Dù sao, đây là một ví dụ về thời gian có các giá trị nằm ở phần trên của phạm vi được chấp nhận của chúng:
SELECT MAKETIME(838, 59, 59.999999);
Kết quả:
+------------------------------+ | MAKETIME(838, 59, 59.999999) | +------------------------------+ | 838:59:59.999999 | +------------------------------+
Các giá trị này vẫn nằm trong phạm vi được chấp nhận của chúng và do đó chúng tôi nhận được giá trị thời gian hợp lệ.
Phút &Giây không hợp lệ
Đây là những gì sẽ xảy ra khi chúng tôi vượt qua phạm vi được chấp nhận trong minute
và second
đối số:
SELECT
MAKETIME(00, 60, 00),
MAKETIME(00, 00, 60);
Kết quả:
+----------------------+----------------------+ | MAKETIME(00, 60, 00) | MAKETIME(00, 00, 60) | +----------------------+----------------------+ | NULL | NULL | +----------------------+----------------------+ 1 row in set, 1 warning (0.001 sec)
Kết quả là null
cho cả hai, với một cảnh báo.
Hãy kiểm tra cảnh báo:
SHOW WARNINGS;
Kết quả:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect seconds value: '60' | +---------+------+-----------------------------------------+
Giờ không hợp lệ
Bây giờ, hãy xem điều gì sẽ xảy ra khi chúng ta đi ra ngoài phạm vi được chấp nhận trong hour
đối số:
SELECT MAKETIME(900, 00, 00);
Kết quả:
+-----------------------+ | MAKETIME(900, 00, 00) | +-----------------------+ | 838:59:59 | +-----------------------+ 1 row in set, 1 warning (0.000 sec)
Trong trường hợp này, một giá trị thời gian được trả về với giờ, phút và giây được cắt bớt vào phạm vi phía trên của chúng. Một cảnh báo cũng được trả lại.
Hãy kiểm tra cảnh báo:
SHOW WARNINGS;
Kết quả:
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '900:00:00' | +---------+------+---------------------------------------------+
Thiếu đối số
Đang gọi MAKETIME()
với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào, dẫn đến lỗi:
SELECT MAKETIME();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Và một ví dụ khác:
SELECT MAKETIME( 12, 1 );
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Hẹn hò
Đồng thời xem SEC_TO_TIME()
để tạo giá trị ngày từ một số giây.
Cũng xem MAKEDATE()
để xây dựng một giá trị ngày tháng từ năm và ngày trong năm của nó.