2008-10-14 5 views
4

Каков наилучший способ подсчитать время между двумя значениями datetime, полученными из MySQL, когда мне нужно рассчитывать только время между часами 08: 00: 00-16: 00 : 00.SQL (?): Подсчет времени между двумя значениями даты и времени

Например, если у меня есть значения 2008-10-13 18:00:00 и 2008-10-14 10:00:00 разница во времени должна быть 02:00:00.

Могу ли я сделать это с помощью SQL или что это лучший способ сделать это? Я создаю сайт и использую PHP.

Благодарим за ответы.

EDIT: Точно, я пытаюсь подсчитать время, когда «билет» находился в определенном состоянии в рабочее время. Время может быть как пара недель.

EDIT2: У меня нет проблем с расчетом фактической разницы во времени, но вычитание этого времени, 00: 00: 00-08: 00: 00 и 16: 00: 00-00: 00: 00 в день.

-Samuli

ответ

10

TIMEDIFF функция

TimeDiff() возвращает выражение1 - выражение2 выражается как значение времени. expr1 и expr2 являются выражениями времени или времени , но оба они должны быть того же типа.

mysql> SELECT TIMEDIFF('2000:01:01 00:00:00', 
    ->     '2000:01:01 00:00:00.000001'); 
     -> '-00:00:00.000001' 
mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001', 
    ->     '2008-12-30 01:01:01.000002'); 
     -> '46:58:57.999999' 
1

Я думаю, вы должны вычислить разницу в собственном коде вместо использования более сложного предложения SQL, потому что:

  • Этот расчет, кажется, является частью вашей бизнес-логики. Кажется проще поддерживать, если вы интегрируете его с остальной частью вашего бизнес-кода.
  • База данных часто является узким местом, поэтому не загружайте ее больше, чем необходимо.
Смежные вопросы