Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Выборка по временному промежутку, начальное время - сегодня, конечное - завтра
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 957
Пользователь №: 37872
На форуме: 4 года, 1 день
Карма: 37




Подскажите пожалуйста как сделать выборку из DB строк, которые находятся вне промежутка времени, который начинается например сегодня в 22:00 и закончится завтра в 08:00

SELECT * FROM `variants` WHERE CURTIME() NOT BETWEEN `block_from` AND `block_to`

в таком виде работает, но только с 22:00 до 23:59 текущего дня, если указать в `block_to` 00:00, то не срабатывает. Может есть другое решение задачи - в общем цель блокировать выборку строк например с 22:00 сегодня до 08:00 завтра, или вообще например на какой-то интервал времени. Попробовал сделать так

SELECT * FROM `variants` WHERE CURTIME() NOT BETWEEN `block_from` AND `block_from`+ INTERVAL `interval_block` HOUR

в block_from по умолчанию - 23:59:59(если указать по умолчанию 00:00:00 и интервал 0, то не выводит ничего), вроде работает, но я сомневаюсь в правильности данного запроса!

Пока сделал так

SELECT * FROM `variants` WHERE CURTIME() NOT BETWEEN `block_from` AND `block_from`+ `interval_block`

`block_from` - 22:00:00 а `interval_block` - 10:00:00, вроде срабатывает все как нужно, но все же хочется указывать не интервал а конечное время, может есть какой способ?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walerus  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чтобы все !
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2383
Пользователь №: 26852
На форуме: 6 лет, 4 месяца, 11 дней
Карма: 130




arbuzmaster
Цитата
в общем цель блокировать выборку строк например с 22:00 сегодня до 08:00 завтра, или вообще например на какой-то интервал времени

Цитата
но все же хочется указывать не интервал а конечное время
ты уже определись, делать интервал или все же конечную дату?
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 957
Пользователь №: 37872
На форуме: 4 года, 1 день
Карма: 37




walerus В том то и дело, что дату блокировать не нужно, а нужно именно временной промежуток. Но он может быть, как в течении суток, так и переходить из одних суток в другие. То есть, получается, что все таки интервал здесь больше подходит наверное.


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walerus  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чтобы все !
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2383
Пользователь №: 26852
На форуме: 6 лет, 4 месяца, 11 дней
Карма: 130




Я не пойму в чем затруднение? время в базе UNIXTIME ? или в каком формате?, прикрепи кусок базы к посту и дай свое условие выборки, что бы понять что ты в результате хочешь, будем "курить"...
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 957
Пользователь №: 37872
На форуме: 4 года, 1 день
Карма: 37




user posted image
Вот кусок из БД, нужно сделать так, что бы как например в первой строке - в промежуток с 10:00 до 17:00 строка не попадала в выборку, если я делаю так

SELECT * FROM `variants` WHERE CURTIME() NOT BETWEEN `block_from` AND `block_from`+ `interval_block`

то это срабатывает, но если поставить в interval_block значение превышающее 24 часа, в сумме block_from+interval_block, то в результате получается время которого не существует !
Например block_from 22:00:00 interval_block 10:00:00 в итоге дадут не - 08:00:00 а 32:00:00.
Прочитал, что есть такие штуки как SEC_TO_TIME() TIME_TO_SEC() MOD(s,86400) как их сюда прилепить сейчас соображаю, но пока получается плохо.Может я вообще не в том направлении действую, может это как то по другому делается?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
SerginhoLD  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



че?
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 723
Пользователь №: 24500
На форуме: 6 лет, 9 месяцев, 4 дня
Карма: 55




я не уверен, но типа того

SELECT 
*,
TIME_TO_SEC(`block_from`) i1,
TIME_TO_SEC(`block_from` + `interval_block`) i2,
TIME_TO_SEC(CURTIME()) ct
FROM `variants`
HAVING
ct NOT BETWEEN i1 AND i2
AND (IF(
i2 > 86400, # 24 часа
ct NOT BETWEEN 0 AND (i2 - 86400),
1
));


--------------------
"internet explorer всех правильней отображает страницы" ©
PM
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 957
Пользователь №: 37872
На форуме: 4 года, 1 день
Карма: 37




SerginhoLD Спасибо, вроде работает правильно!


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса