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

hasil tak terduga untuk timediff

Sunting: Versi MySQL apa yang Anda gunakan? Ini bekerja dengan baik pada 5.0.22 setidaknya. Saya baru saja menjalankan kueri ini. lihat di sini

 mysql> SELECT TIME_TO_SEC(TIMEDIFF('2000:01:01 00:00:00', '2001:01:01 00:00:00'));
 +---------------------------------------------------------------------+
 | TIME_TO_SEC(TIMEDIFF('2000:01:01 00:00:00', '2001:01:01 00:00:00')) |
 +---------------------------------------------------------------------+
 |                                                           -31622400 |
 +---------------------------------------------------------------------+
 1 row in set (0.00 sec)

Apakah Anda lihat di sini ? Ini mungkin masalah pemotongan karena Rentang waktu jauh lebih kecil daripada perbedaan tanggal yang Anda miliki.

Jawaban Asli

Gunakan ini

    SELECT TIMESTAMPDIFF(SECOND,'2000:01:01 00:00:00', '2001:01:01 00:00:00');
    +--------------------------------------------------------------------+
    | TIMESTAMPDIFF(SECOND,'2000:01:01 00:00:00', '2001:01:01 00:00:00') |
    +--------------------------------------------------------------------+
    |                                                           31622400 |
    +--------------------------------------------------------------------+

Masalahnya adalah Anda mencoba mengubah waktu negatif menjadi waktu dalam detik. Mengganti variabel akan berhasil.

    SELECT TIME_TO_SEC(TIMEDIFF('2001:01:01 00:00:00','2000:01:01 00:00:00'));
    +--------------------------------------------------------------------+
    | TIME_TO_SEC(TIMEDIFF('2001:01:01 00:00:00','2000:01:01 00:00:00')) |
    +--------------------------------------------------------------------+
    |                                                           31622400 |
    +--------------------------------------------------------------------+



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buang database mysql ke cadangan plaintext (CSV) dari baris perintah

  2. com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException:Tidak dapat memanggil rollback saat autocommit=true

  3. waktu berlalu dengan logika jeda mysql TIMEDIFF() dan PHP

  4. MySQL INNER JOIN pilih hanya satu baris dari tabel kedua

  5. Urutan hasil berdasarkan data klausa WHERE IN