sql >> Database teknologi >  >> RDS >> Mysql

MySQL fra_unixtime efter 2038-01-19?

En løsning kan være at bruge DATE_ADD , men jeg er ikke sikker på, hvordan den opfører sig præstationsmæssigt:

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

Så indtil videre bruger jeg

...
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
...
 

hvilket burde minimere indvirkningen på ydeevnen, hvis der er nogen.




  1. Database sharding vs partitionering

  2. Hvordan logger jeg kun de rå forespørgsler i MySQL?

  3. Sådan kombinerer du dato fra et felt med tid fra et andet felt - MS SQL Server

  4. Sådan får du sidste række pr. gruppe i PostgreSQL