Я використав наступний запит, щоб отримати всезаписи, які відповідають даному часу у розділі 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 питання:
- ваш запит має використовувати "<=", а не "=".
замість% 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
порівняння