sql >> Databáze >  >> RDS >> Mysql

MySQL z_unixtime po 2038-01-19?

Řešením může být použití DATE_ADD , ale nejsem si jistý, jak se to chová z hlediska výkonu:

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

Zatím tedy používám

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

což by mělo minimalizovat dopad na výkon, pokud nějaký existuje.




  1. Android Room – Práce se seznamem objektů v objektu a výsledkem dotazování

  2. Získejte den v týdnu v SQL Server 2005/2008

  3. NOT IN výběr s hodnotami NULL

  4. ORA-22905 - při dotazu na typ tabulky příkazem select