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

Как да получите UTC Datetime от UNIX_TIMESTAMP() в MySQL

Мисля, че проблемът ви не е CONVERT_TZ , но FROM_UNIXTIME .

FROM_UNIXTIME приема цяло число като аргумент - което означава 32 бита.

Ако вземете днешния unix-timestamp:1480546792 , изместен надясно 24 бита - вие просто надвишавате 32-битовото ограничение за валиден параметър на unix_time .

from_unixtime може да обработва само параметри до 2147483647 - Което означава, че работи до 2038-01-19 04:14:07

Сблъсквал съм се и с този проблем и от 2002 г. корекция за него е „в процес на разработка“.

Докато най-накрая бъде решен, трябва да използвате заобиколно решение, като използвате date_add . Вместо

from_unixtime (x)

използвайте

date_add(from_unixtime(0), INTERVAL x second)

Резултат(и):

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. Вмъкване в таблицата на Mysql, когато потребителят затвори браузъра?

  2. Използването на if(isset($_POST['submit'])), за да не се показва ехо, когато скриптът е отворен, не работи

  3. Най-добра практика за обработка на грешки чрез PDO

  4. Мигриране на данни към Firebase от mysql

  5. Възможно ли е да хвана невалидна стойност в MySQL, когато получа грешка при ограничаване на външния ключ?