поиск между датами в MYSQL в этом формате 03/17 / 10.11: 22: 45 - PullRequest
0 голосов
/ 17 марта 2010

У меня есть скрипт, который автоматически заполняет базу данных mysql данными каждый час. Он заполняет поле даты, например 03/17 / 10.12: 34: 11 и т. Д.

Я работаю над извлечением данных на основе 1 дня за раз из сценария поиска.

Если я использую

SELECT * 
  FROM call_logs 
 WHERE call_initiated between '03/17/10.12:00:00' and '03/17/10.13:00:00'

это работает, но когда я пытаюсь добавить остальные параметры поиска, оно игнорирует поле call_initiated.

SELECT * 
  FROM call_logs 
 WHERE  caller_dn = '2x9xxx0000' OR called_dn = '2x9xxx0000' 
   AND call_initiated between '03/17/10.12:00:00' and '03/17/10.13:00:00'

^ - Я выкинул пару цифр. Я также пытался без функции между, и использовал> = <=, чтобы получить записи, но получить те же результаты. Я уверен, что это упущение, заранее спасибо. </p>

Ответы [ 2 ]

3 голосов
/ 17 марта 2010
  • попробуйте использовать скобки вокруг вашего оператора ИЛИ ... где (caller_dn = '2x9xxx0000' ИЛИ ​​call_dn = '2x9xxx0000') И call_initiated между '03 / 17/10.12:00:00 'и '03 /17/10.13:00:00'

  • используйте оператор IN вместо OR ... где caller_dn IN ('2x9xxx0000', '2y9yyyy000') И call_inidiated между '03 / 17/10.12:00:00 'и '03 /17/10.13:00:00'

2 голосов
/ 17 марта 2010

Оператор OR, скорее всего, является проблемой, так как OR оценивает левую сторону, видит, что это правда, ему все равно, что находится на правом сайте, потому что, пока одно из утверждений истинно, оно принимает во внимание все утверждение должно быть правдой.

Читайте об операторе ИЛИ на странице MYSQL

Ваше заявление должно выглядеть как

SELECT * FROM `call_logs` WHERE (caller_dn='2x9xxx0000' OR called_dn='2x9xxx0000') AND call_initiated BETWEEN '03/17/10.12:00:00' and '03/17/10.13:00:00';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...