Trong MariaDB, FROM_UNIXTIME()
là một hàm ngày và giờ được tích hợp sẵn trả về giá trị ngày giờ dựa trên một dấu thời gian unix nhất định.
Bạn chuyển dấu thời gian unix cho hàm khi bạn gọi nó.
Kết quả được trả về trong 'YYYY-MM-DD HH:MM:SS'
hoặc YYYYMMDDHHMMSS.uuuuuu
định dạng, tùy thuộc vào việc hàm được sử dụng trong ngữ cảnh chuỗi hay số.
Giá trị được biểu thị theo múi giờ hiện tại.
Cú pháp
Hàm có thể được sử dụng theo những cách sau:
FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp,format)
Nơi unix_timestamp
là dấu thời gian unix và định dạng format
là một chuỗi định dạng tùy chọn để định dạng kết quả.
Ví dụ
Đây là một ví dụ:
SELECT FROM_UNIXTIME(1721428321);
Kết quả:
+---------------------------+ | FROM_UNIXTIME(1721428321) | +---------------------------+ | 2024-07-20 08:32:01 | +---------------------------+
Micro giây
Dưới đây là một ví dụ bao gồm micro giây:
SELECT FROM_UNIXTIME(1721428321.123456);
Kết quả:
+----------------------------------+ | FROM_UNIXTIME(1721428321.123456) | +----------------------------------+ | 2024-07-20 08:32:01.123456 | +----------------------------------+
Ngữ cảnh dạng số
Khi sử dụng FROM_UNIXTIME()
trong ngữ cảnh số, kết quả được trả về YYYYMMDDHHMMSS.uuuuuu
định dạng:
SELECT FROM_UNIXTIME(1721428321.123456) + 0;
Kết quả:
+--------------------------------------+ | FROM_UNIXTIME(1721428321.123456) + 0 | +--------------------------------------+ | 20240720083201.123456 | +--------------------------------------+
Định dạng kết quả
Dưới đây là một ví dụ về việc chuyển một chuỗi định dạng để định dạng kết quả:
SELECT FROM_UNIXTIME(1721428321, '%W, %D %M %Y');
Kết quả:
+-------------------------------------------+ | FROM_UNIXTIME(1721428321, '%W, %D %M %Y') | +-------------------------------------------+ | Saturday, 20th July 2024 | +-------------------------------------------+
Xem Chuỗi định dạng ngày MariaDB để biết danh sách các chuỗi định dạng có thể được sử dụng với FROM_UNIXTIME()
chức năng.
Giới hạn dấu thời gian
Dấu thời gian trong MariaDB có giá trị tối đa là 2147483647
. Điều này là do giới hạn 32-bit cơ bản. Sử dụng hàm trên dấu thời gian ngoài dấu thời gian này dẫn đến null
được trả lại.
Dưới đây là một ví dụ chứng minh hạn chế này:
SELECT
FROM_UNIXTIME(2147483647),
FROM_UNIXTIME(2147483648);
Kết quả:
+---------------------------+---------------------------+ | FROM_UNIXTIME(2147483647) | FROM_UNIXTIME(2147483648) | +---------------------------+---------------------------+ | 2038-01-19 13:14:07 | NULL | +---------------------------+---------------------------+
Múi giờ
Kết quả của FROM_UNIXTIME()
được biểu thị bằng múi giờ hiện tại.
Các ví dụ sau sử dụng cùng một dấu thời gian unix với các múi giờ khác nhau:
SET time_zone = 'America/New_York';
SELECT FROM_UNIXTIME(2147483647);
Kết quả:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-18 22:14:07 | +---------------------------+
Chuyển sang múi giờ khác và chạy lại:
SET time_zone = 'Africa/Abidjan';
SELECT FROM_UNIXTIME(2147483647);
Kết quả:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-19 03:14:07 | +---------------------------+
Dấu thời gian Unix hiện tại
Đây là một ví dụ sử dụng UNIX_TIMESTAMP()
hàm trả về dấu thời gian unix hiện tại:
SELECT
UNIX_TIMESTAMP(),
FROM_UNIXTIME(UNIX_TIMESTAMP());
Kết quả:
+------------------+---------------------------------+ | UNIX_TIMESTAMP() | FROM_UNIXTIME(UNIX_TIMESTAMP()) | +------------------+---------------------------------+ | 1621734047 | 2021-05-23 11:40:47 | +------------------+---------------------------------+
Thiếu đối số
Đang gọi FROM_UNIXTIME()
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 FROM_UNIXTIME();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'
Và một ví dụ khác:
SELECT FROM_UNIXTIME( 1, 2, 3 );
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'