Как вытащить длительность времени из поля "отработанные часы"? - PullRequest
0 голосов
/ 25 апреля 2020

Я новичок в SQL, поэтому все еще изучая веревки, я надеюсь, что кто-то может помочь мне с этим базовым c запросом. Кажется, я ничего не могу найти в Интернете (возможно, не ищу нужную вещь).

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

+---------------------+
| hours               |
+---------------------+
| Monday|10:00-21:00  |
| Tuesday|10:00-21:00 |
| Friday|10:00-21:00  |
+---------------------+

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Попробуйте: -

SELECT 
SUBSTRING_INDEX(hours,'|',1) as "Day",
TIMEDIFF(
SUBSTRING_INDEX(SUBSTRING_INDEX(hours,'|',-1),'-',-1),
SUBSTRING_INDEX(SUBSTRING_INDEX(hours,'|',-1),'-',1)) as "Duration"
FROM example_table; 
0 голосов
/ 25 апреля 2020

Я представляю здесь шаги без указания синтаксиса c (я давно работал с MySQL и, следовательно, мои воспоминания немного размыты ...):

  1. Изолировать часть временного окна, разделив строку с помощью «|» в качестве разделителя,
  2. Разделить строку на две части (используя «-» в качестве разделителя),
  3. Привести две части (строки) к типу TIME,
  4. Использовать SQL функция для вычисления разницы (TIMEDIFF; см. this ).
  5. Поскольку результат также будет иметь тип TIME, вам может потребоваться преобразовать его в любые необходимые вам единицы измерения (если только Тип ВРЕМЯ - это то, что вы ищете).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...