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

MySQL from_unixtime sau 2038-01-19?

Một giải pháp thay thế có thể là sử dụng DATE_ADD , nhưng tôi không chắc nó hoạt động như thế nào về hiệu suất:

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
...
SELECT DATE_ADD(FROM_UNIXTIME(0), INTERVAL 4147483647 SECOND); //2101-06-06 07:47:27

Vì vậy, hiện tại, tôi đang sử dụng

...
CASE 
  WHEN `javaTimeStampColumn` > 2147483647 THEN
    CONVERT_TZ(DATE_ADD(FROM_UNIXTIME(0), INTERVAL `javaTimeStampColumn`/1000 SECOND),'+00:00','+00:00')
  ELSE  
    CONVERT_TZ(FROM_UNIXTIME(`javaTimeStampColumn`/1000), '+00:00','+00:00')
END as ts
FROM table
...

điều này sẽ giảm thiểu tác động đến hiệu suất nếu có.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dòng lệnh MySQL và các giao dịch

  2. Không thể tạo bảng (errno:150) trên FOREIGN KEY

  3. Dữ liệu bị cắt bớt cho cột 'xxxx' ở hàng 1

  4. Cập nhật hàng với dữ liệu từ một hàng khác trong cùng một bảng

  5. Hàm MySQL SQRT () - Trả về Căn bậc hai của một số trong MySQL