Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL from_unixtime след 2038-01-19?

Заобиколно решение може да бъде използването на DATE_ADD , но не съм сигурен как се държи по отношение на производителността:

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

Така че засега използвам

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

което трябва да сведе до минимум въздействието върху производителността, ако има такова.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изчислете разликата между две дати в часове и минути

  2. MySQL Използвате безопасен режим на актуализиране и сте се опитали да актуализирате таблица без WHERE

  3. Генеалогично дърво mysql

  4. Как да разположите Percona Server за MySQL за висока наличност

  5. CakePHP 3:Най-добра практика за временни SQL таблици