MySQL: добавление X минут к столбцу времени

0

У меня есть столбец со временем и столбцом с целым числом, представляющим минуты. Теперь я хочу добавить/вычесть минуты из столбца времени. Следующие работы но чувствуют себя странно (CURTIME здесь как колонка времени и 15 как int column):

SELECT ADDTIME(CURTIME(), CONCAT("00:" , 15, ":00")) AS foo FROM dual;

Как это можно улучшить?

Теги:

1 ответ

2
Лучший ответ

Вы можете использовать INTERVAL с CURTIME() или CURRENT_TIME() или аналогичными:

SELECT CURTIME() + INTERVAL 15 MINUTE

Как в:

mysql> SELECT CURTIME() + INTERVAL 15 MINUTE;
+--------------------------------+
| CURTIME() + INTERVAL 15 MINUTE |
+--------------------------------+
| 12:23:24                       |
+--------------------------------+
1 row in set (0.01 sec)

mysql> 

Для вашего случая, если ваше CURTIME() является TIME, а длительность - целым числом, тогда они должны просто сложить в порядке, например:

SELECT time_field + INTERVAL my_duration MINUTE

Если нет, вы можете использовать CAST() чтобы получить типы, подходящие для добавления.

Арифметику даты также можно выполнить с помощью INTERVAL вместе с оператором + или:

date + INTERVAL expr unit
date - INTERVAL expr unit

Модуль INTERVAL expr разрешен по обе стороны оператора +, если выражение на другой стороне является значением даты или даты и времени. Для оператора-оператора модуль INTERVAL expr разрешен только с правой стороны, поскольку нет смысла вычитать значение даты или даты и времени от интервала.

Ссылка: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html

  • 0
    Мне очень нравится ваш ответ! Теперь я застрял с MySQL 5.5 ... На 5.5 я получаю NULL в результате. Нужно обновить в ближайшее время. Спасибо!
  • 0
    Я думаю, что это должно работать в более ранних версиях, включая 5.5. Это может быть просто проблема типов или аналогичная, если она не работает на 5.5.

Ещё вопросы

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