Расчет метки времени на запросах SQL

0

Я пытаюсь показать общее время поездки, которое каждый клиент в формате времени данных (00:00:00)

Но я смущен, должен ли я просто делать

SEC_TO_TIME (SUM (время окончания - время начала))

или же

SEC_TO_TIME (SUM (TIME_TO_SEC (время окончания - время начала)))

или же

SEC_TO_TIME (SUM (TIME_TO_SEC (конечное время) - TIME_TO_SEC (время запуска))

если время окончания и время начала в формате даты и времени

который должен быть правильным способом сделать это. Я получаю другой результат для первого и второго

  • 0
    Что произойдет, если, скажем, на поездку уйдет 100 часов? Хотите ли вы сообщить что-то вроде 100:10:05 ? Будет ли более разумным просто сообщать в течение нескольких часов с возможным дробным компонентом?
  • 0
    нам сказали выразить это в ЧЧ / ММ / СС. Мне просто любопытно, следует ли нам изменить время в секундах до расчета и повернуть его снова
Теги:
database
datetime

2 ответа

1

первая:

конвертировать время endtime и время starttime в метку времени с помощью UNIX_TIMESTAMP

второй:

вычесть их

примечание: результат будет в секундах

(UNIX_TIMESTAMP(endtime) - UNIX_TIMESTAMP(starttime))

определить, сколько времени потратил заказчик

третий:

конвертировать результат во времени

SEC_TO_TIME( (UNIX_TIMESTAMP(endtime) - UNIX_TIMESTAMP(starttime)) )

поэтому ваш окончательный запрос должен быть таким

SELECT SEC_TO_TIME( (UNIX_TIMESTAMP(endtime) - UNIX_TIMESTAMP(starttime)) ) FROM travel

  • 0
    Если начальная и конечная даты уже являются отметкой времени, нам не нужно их преобразовывать?
  • 0
    да......................
0

Из ваших трех вариантов я бы рекомендовал:

SEC_TO_TIME(SUM(TIME_TO_SEC(endtime) 

- TIME_TO_SEC (время запуска))

Во-первых, я думаю, что это ясно, что вы хотите сделать:

  • Преобразование даты/времени в секундах
  • Добавьте секунды
  • Преобразовать назад

Во-вторых, MySQL обрабатывает значения даты/времени как числа в числовом контексте. Это может вызвать странные результаты, потому что 2018-09-13 превращается в 20 180 913, и это обычно не то, что вы хотите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню