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

Незаконен микс от съпоставяния за операция за сравнение дата/час

  1. Както е обяснено в ръчното въвеждане за DATE_ADD() :

    Във вашия случай, защото table1.tim е TIME стойност, функцията връща низ.

    Низът се връща в набора от знаци и съпоставяне, дадени от character_set_connection и collation_connection .

  2. Както е обяснено в ръчното въвеждане за TIME() :

    Низът се връща като двоичен низ (защо не използвам набора от символи за връзка и сортирането е извън мен — може би грешка?).

  3. Както е обяснено в ръчния запис за Преобразуване на тип при оценка на израза :

    Следователно извършеното сравнение е сравнение на низове, но binary низът не може да бъде принуден към подходящо съпоставяне за сравнение (тъй като неговото кодиране не е известно). Оттук и грешката, на която сте свидетел.

Човек може да принуди сравнението да бъде извършено правилно чрез изрично привеждане един или и двата операнда, но бих се изкушил просто да преработя клаузата, така че преобразуването да се извършва имплицитно от сравнение с TIME тип:

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. Зададох MySQL колона на NOT NULL, но все пак мога да вмъкна празна стойност

  2. Разбийте данните на колони в mysql

  3. mysqlimport с помощта на dump

  4. Как да коригирам лошо форматиран JSON в PHP?

  5. Вземете топ n записа за всяка група групирани резултати