Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Добавить или вычесть 2 часа, при добавлении времени в базу данных
 
 автор: Nextia   (28.12.2011 в 05:21)   письмо автору
2 Кб
 
 

Из формы приходят часы,минуты, секунды, каждый параметр в своей переменной.
Необходимо время за два часа до указанного времени и два часа после него для запроса в базу.
База понимает часы в 24 разбивке с ведущими нулями перед временем (типа 01,02,03 и тд).
проблема возникает, например, если выбирается 23 часа
+2 и совсем всё плохо и -2 часа если время, например 01
Написала вот такое решение, но, предполагаю более элегантный можно создать. Натолкните на мысль, пожалуйста.

  Ответить  
 
 автор: Lotanaen   (28.12.2011 в 10:51)   письмо автору
 
   для: Nextia   (28.12.2011 в 05:21)
 

а число-месяц год не нужно учитывать? можно посмотреть на структуру таблицы?

  Ответить  
 
 автор: Nextia   (29.12.2011 в 02:41)   письмо автору
 
   для: 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";

С датой совсем просто

  Ответить  
 
 автор: cheops   (28.12.2011 в 12:58)   письмо автору
 
   для: Nextia   (28.12.2011 в 05:21)
 

В базе данных (если речь идет об MySQL) у вас есть возможность использовать конструкцию INTERVAL 2 HOUR, чтобы прибавлять и вычитать её из календарного значения.

  Ответить  
 
 автор: Nextia   (30.01.2012 в 05:00)   письмо автору
 
   для: cheops   (28.12.2011 в 12:58)
 

при вычитании двух часов допустим из 00.00 получаем предыдущие сутки
при добавлении к 23 следующие...
Как этот нюанс нейтрализовать?

  Ответить  
 
 автор: cheops   (30.01.2012 в 10:43)   письмо автору
 
   для: Nextia   (30.01.2012 в 05:00)
 

А какое поведение должно быть на границах? Если нужно, чтобы запрос оставался в рамках суток можно выделить час при помощи функции HOUR() и работать с ним, следя, чтобы полученный результат был больше 0 и меньше 24.

  Ответить  
 
 автор: Valick   (30.01.2012 в 10:49)   письмо автору
 
   для: Nextia   (30.01.2012 в 05:00)
 

добавить в условие выборки AND для выборки за требуемые сутки

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования