Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Mendapatkan Datetime UTC dari UNIX_TIMESTAMP() di MySQL

Saya pikir masalah Anda bukan CONVERT_TZ , tapi FROM_UNIXTIME .

FROM_UNIXTIME mengambil Integer sebagai argumen - yang berarti 32 bit.

Jika Anda menggunakan stempel waktu unix hari ini:1480546792 , digeser ke kanan 24 bit - Anda baru saja melampaui batas 32-bit untuk parameter yang valid pada unix_time .

from_unixtime hanya dapat menangani parameter hingga 2147483647 - Artinya, ini berfungsi hingga 2038-01-19 04:14:07

Saya juga mengalami masalah ini, dan sejak 2002 perbaikan untuk ini "sedang dikembangkan".

Sampai akhirnya diselesaikan, Anda harus menggunakan solusi, menggunakan date_add . Alih-alih

from_unixtime (x)

gunakan

date_add(from_unixtime(0), INTERVAL x second)

Hasil:

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. PILIH UNTUK PEMBARUAN memegang seluruh tabel di MySQL daripada baris demi baris

  2. SQL:Ulangi baris hasil beberapa kali, dan beri nomor baris

  3. cakephp menambahkan catatan dengan beberapa parameter diperbaiki

  4. Kembalikan hanya baris yang nilai maksimalnya kurang dari yang ditentukan

  5. permintaan penghitungan untuk dokumen di apache solr