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

Campuran ilegal dari susunan untuk operasi untuk perbandingan tanggal/waktu

  1. Sebagaimana dijelaskan dalam entri manual untuk DATE_ADD() :

    Dalam kasus Anda, karena table1.tim adalah TIME value, fungsi mengembalikan string.

    String dikembalikan dalam set karakter dan susunan yang diberikan oleh character_set_connection dan collation_connection .

  2. Sebagaimana dijelaskan dalam entri manual untuk TIME() :

    String dikembalikan sebagai string biner (mengapa tidak menggunakan set karakter koneksi &pemeriksaan di luar jangkauan saya—mungkin bug?).

  3. Sebagaimana dijelaskan dalam entri manual untuk Konversi Jenis dalam Evaluasi Ekspresi :

    Oleh karena itu perbandingan yang dilakukan adalah perbandingan string, tetapi binary string tidak dapat dipaksa ke susunan yang sesuai untuk perbandingan (karena penyandiannya tidak diketahui). Karenanya kesalahan yang Anda saksikan.

Seseorang dapat memaksa perbandingan dilakukan dengan benar dengan casting secara eksplisit satu atau kedua operan, tetapi saya akan tergoda untuk mengerjakan ulang klausa sehingga konversi terjadi secara implisit dari perbandingan dengan TIME ketik:

TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara terbaik mendesain REST API dengan banyak filter?

  2. Bagaimana cara mencocokkan satu karakter di MySQL sebagai ganti %?

  3. Butuh bantuan dalam membuat buku besar sederhana dari tabel hutang &kredit mysql?

  4. Mengekspor tabel MySQL ke file CSV

  5. PILIH dari database mysql pada panggilan javascript