/ / Mysql записує записи на основі часу - mysql

Mysql записує записи на основі часу - mysql

Я використав наступний запит, щоб отримати всезаписи, які відповідають даному часу у розділі WHERE. Але я отримую різні результати. Якщо ви подивитеся на тактову картину, ви можете побачити, що 2 записи мають хвилини <> 30, але все-таки воно зазначається як результат запиту. Однак, якщо я зміню час, то вони не перераховані. Що може бути проблемою?

SELECT * FROM pos_takeaways WHERE STR_TO_DATE(time,"%d/%m/%y %H:%U:%S") = STR_TO_DATE("20/6/2011 22:30:00","%d/%m/%Y %H:%U:%S")

Вихід: введіть опис зображення тут

Відповіді:

2 для відповіді № 1

Я думаю, що є 2 питання:

  1. ваш запит має використовувати "<=", а не "=".
  2. замість% U, використовуйте% i у аргументі STR_TO_DATE (% U для номера тижня)

    SELECT * FROM pos_takeaways WHERE STR_TO_DATE (час "% d /% m /% y% H:% i:% S") <= STR_TO_DATE ("20.06.2011 22:30:00", "% d /% m /% Y % H:% i:% S ");

Сподіваюся, це допоможе.


1 для відповіді № 2

Здається, існує певна проблема STR_TO_DATE функція в MySQL, перевірити http://bugs.mysql.com/bug.php?id=56271. Отже, якщо ви використовуєте стару версію MySQL (6 місяців), це може бути причиною, і ви повинні розглянути питання про оновлення свого MySQL. Якщо це не проблема, спробуйте скористатись BETWEEN AND використовуючи одне і те ж значення в обох полях. Оператор між ними. Не забудьте перевірити своє попередження щодо його використання DATE порівняння