The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"mysql: ... where datetime between time1 and time2 ..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"mysql: ... where datetime between time1 and time2 ..."  
Сообщение от rmf email on 06-Мрт-07, 17:29 
можно ли и как сделать подобный по смыслу запрос

select * from table
where DATETIME_FIELD between '10:00:00' and '10:59:59'

то есть есть поле типа DATETIME (дата и время)
нужна выборка всех значений в интервале времени (пофиг на дату)

без разбиения поле DATETIME на 2 поля DATE и TIME

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "mysql: ... where datetime between time1 and time2 ..."  
Сообщение от rmf email on 06-Мрт-07, 17:42 
Забыл добавить - версия MySQL 4.0.20

`TIME()' is available as of MySQL 4.1.1.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "mysql: ... where datetime between time1 and time2 ..."  
Сообщение от elvenic (??) on 06-Мрт-07, 18:16 
>можно ли и как сделать подобный по смыслу запрос
>
>select * from table
>where DATETIME_FIELD between '10:00:00' and '10:59:59'
>
>то есть есть поле типа DATETIME (дата и время)
>нужна выборка всех значений в интервале времени (пофиг на дату)
>
>без разбиения поле DATETIME на 2 поля DATE и TIME

<...>
where
    hour(DATETIME_FIELD) * 3600 + minute(DATETIME_FIELD) * 60 + second(DATETIME_FIELD) <
    10 * 3600 + 00 * 60 + 00
and
    hour(DATETIME_FIELD) * 3600 + minute(DATETIME_FIELD) * 60 + second(DATETIME_FIELD) >
    10 * 3600 + 59 * 60 + 59

or something like this ;)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "mysql: ... where datetime between time1 and time2 ..."  
Сообщение от rmf email on 07-Мрт-07, 09:53 
>or something like this ;)

очень похоже.

однако теперь встал другой вопрос:
будет ли использован индекс поля DATETIME_FIELD ?

а) при таком запросе
б) при запросе TIME(DATETIME_FIELD) between TIME1 and TIME2 в mysqld > 4.1.11

предполагаю, что индекс НЕ БУДЕТ использован в обоих случаях

буду проверять

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "mysql: ... where datetime between time1 and time2 ..."  
Сообщение от elvenic (??) on 07-Мрт-07, 18:20 
>будет ли использован индекс поля DATETIME_FIELD ?
>
>а) при таком запросе
>б) при запросе TIME(DATETIME_FIELD) between TIME1 and TIME2 в mysqld > 4.1.11
>

Можно попробовать сказать explain <sql text> - очень часто это открывает глаза на многое ;)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "mysql: ... where datetime between time1 and time2 ..."  
Сообщение от Savva email(ok) on 07-Мрт-07, 17:42 
>можно ли и как сделать подобный по смыслу запрос
>
>select * from table
>where DATETIME_FIELD between '10:00:00' and '10:59:59'
>
>то есть есть поле типа DATETIME (дата и время)
>нужна выборка всех значений в интервале времени (пофиг на дату)
>
>без разбиения поле DATETIME на 2 поля DATE и TIME


Может я чего то не понял ...
Но разве так нельзя ? :
select * from table where HOUR(DATETIME_FIELD)=10

и еще: скорей всего в 4-м мускуле нет, но может появилось в пятом - построение мндекса с указанием функции (в данном случае 'HOUR(DATETIME_FIELD)')... ну как то так в постгресе имеется

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "mysql: ... where datetime between time1 and time2 ..."  
Сообщение от rmf email on 07-Мрт-07, 17:47 
>Может я чего то не понял ...
>Но разве так нельзя ? :
>select * from table where HOUR(DATETIME_FIELD)=10

Это я не точно определил задачу.
Диапазон время произвольный, например: 10:15:00  - 17:39:52

>и еще: скорей всего в 4-м мускуле нет, но может появилось в
>пятом - построение мндекса с указанием функции (в данном случае 'HOUR(DATETIME_FIELD)')...
>ну как то так в постгресе имеется

Интересная информация, спасибо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2023 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру