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

Cách lấy ngày giờ UTC từ UNIX_TIMESTAMP () trong MySQL

Tôi nghĩ vấn đề của bạn không phải là CONVERT_TZ , nhưng FROM_UNIXTIME .

FROM_UNIXTIME lấy một số nguyên làm đối số - có nghĩa là 32 bit.

Nếu bạn sử dụng dấu thời gian unix hàng ngày:1480546792 , chuyển sang phải 24 bit - bạn vừa vượt quá giới hạn 32 bit cho một tham số hợp lệ trên unix_time .

from_unixtime chỉ có thể xử lý các tham số tối đa 2147483647 - Có nghĩa là, nó hoạt động cho đến 2038-01-19 04:14:07

Tôi cũng gặp phải sự cố này và kể từ năm 2002, bản sửa lỗi cho vấn đề này là "đang được phát triển".

Cho đến khi nó cuối cùng đã được giải quyết, bạn nên sử dụng một giải pháp thay thế, bằng cách sử dụng date_add . Thay vì

from_unixtime (x)

sử dụng

date_add(from_unixtime(0), INTERVAL x second)

(Các) kết quả:

SELECT from_unixtime (2147483647); //2038-01-19 04:14:07 
SELECT from_unixtime (2147483648); //NULL

SELECT date_add(from_unixtime(0), Interval 2147483647 second) //2038-01-19 04:14:07
SELECT date_add(from_unixtime(0), Interval 2147483648 second) //2038-01-19 04:14:08


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có phải MySQL đang phá vỡ tiêu chuẩn bằng cách cho phép chọn các cột không phải là một phần của nhóm theo mệnh đề?

  2. Google Chart Api tận dụng giá trị ngày giờ

  3. Làm cách nào để ngăn tự động đăng xuất trong trình mã hóa?

  4. Làm cách nào để ngắt một truy vấn dài trong công cụ dòng lệnh mysql mà không thoát khỏi mysql?

  5. Hibernate mysql čć