Использование Between только на временной части дат - PullRequest
0 голосов
/ 21 сентября 2011

У меня следующий запрос:

SELECT COUNT(*) FROM leads WHERE create_date > '06:00' AND create_date < '18:00';
SELECT COUNT(*) FROM leads WHERE create_date > '06:00' AND create_date < '18:00';

Тем не менее, столбец create_date выглядит как '2011-08-26 10:18:01', и я хочу найти все между этими периодами, независимодня.

Как я могу просто запросить время из значений create_date?

Как также найти все значения не в эти периоды времени?НЕ МЕЖДУ ....

Ответы [ 4 ]

3 голосов
/ 21 сентября 2011

Чтобы получить время от даты, вы можете использовать функцию TIME().

SELECT COUNT(*) FROM leads WHERE TIME(create_date) > '06:00' AND create_date < '18:00';
SELECT COUNT(*) FROM leads WHERE TIME(create_date) > '06:00' AND create_date < '18:00';

Чтобы найти время за пределами этого диапазона, просто инвертируйте все в предложениях where.

SELECT COUNT(*) FROM leads WHERE TIME(create_date) < '06:00' AND create_date > '18:00';
SELECT COUNT(*) FROM leads WHERE TIME(create_date) < '06:00' AND create_date > '18:00';
2 голосов
/ 21 сентября 2011

Предполагая, что create_date имеет тип DATETIME, для извлечения части времени используется только TIME (create_date).

И да, NOT BETWEEN получит обратный набор.

2 голосов
/ 21 сентября 2011

Вы можете просто разыграть ВРЕМЯ:

SELECT COUNT(*) FROM leads WHERE TIME(create_date) > '06:00' AND TIME(create_date) < '18:00';
2 голосов
/ 21 сентября 2011

Используйте функцию TIME() для возврата только временной части столбца DATETIME.

SELECT COUNT(*) FROM leads WHERE TIME(create_date) > '06:00' AND TIME(create_date) < '18:00';

Чтобы найти значения за пределами этих периодов, используйте

SELECT COUNT(*) FROM leads WHERE TIME(create_date) <= '06:00' AND TIME(create_date) >= '18:00';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...