|
 2 Кб |
|
| Из формы приходят часы,минуты, секунды, каждый параметр в своей переменной.
Необходимо время за два часа до указанного времени и два часа после него для запроса в базу.
База понимает часы в 24 разбивке с ведущими нулями перед временем (типа 01,02,03 и тд).
проблема возникает, например, если выбирается 23 часа
+2 и совсем всё плохо и -2 часа если время, например 01
Написала вот такое решение, но, предполагаю более элегантный можно создать. Натолкните на мысль, пожалуйста. | |
|
|
|
|
|
|
|
для: Nextia
(28.12.2011 в 05:21)
| | а число-месяц год не нужно учитывать? можно посмотреть на структуру таблицы? | |
|
|
|
|
|
|
|
для: Lotanaen
(28.12.2011 в 10:51)
| | Это подготовка к много-табличному запросу Oracle.
сам запрос (абсолютно рабочий, кстати) выглядит вот так смертоубийственно:
$search_query="select username,min(alivetime),max(alivetime),s.phone,s.address,s.clientname from sdxrad.sessionalive a,
sdxrad.dom_lgn_info l where a.framedipaddress='".$adressip."' and a.username=s.login
and a.alivetime between to_date('".$dateset." ".$timeset."','dd-mm-yyyy hh24:mi:ss') and to_date('".$dateset." ".$timeend."','dd-mm-yyyy hh24:mi:ss')
group by a.username,s.phone,s.address,s.clientname";
|
С датой совсем просто | |
|
|
|
|
|
|
|
для: Nextia
(28.12.2011 в 05:21)
| | В базе данных (если речь идет об MySQL) у вас есть возможность использовать конструкцию INTERVAL 2 HOUR, чтобы прибавлять и вычитать её из календарного значения. | |
|
|
|
|
|
|
|
для: cheops
(28.12.2011 в 12:58)
| | при вычитании двух часов допустим из 00.00 получаем предыдущие сутки
при добавлении к 23 следующие...
Как этот нюанс нейтрализовать? | |
|
|
|
|
|
|
|
для: Nextia
(30.01.2012 в 05:00)
| | А какое поведение должно быть на границах? Если нужно, чтобы запрос оставался в рамках суток можно выделить час при помощи функции HOUR() и работать с ним, следя, чтобы полученный результат был больше 0 и меньше 24. | |
|
|
|
|
|
|
|
для: Nextia
(30.01.2012 в 05:00)
| | добавить в условие выборки AND для выборки за требуемые сутки | |
|
|
|