Просто впервые попал в Oracle. как найти разницу во времени между ниже в Oracle.
to_char(CAST(b.start_time AS DATE),'dd-MON-yy hh24:mi:ss') as start_time
to_char(CAST(b.end_time AS DATE),'dd-MON-yy hh24:mi:ss') as end_time
Мне нужно получить разницу во времени в часах и минутах для времени окончания и начала, значит (end_time - start_time).
Ценю твою помощь.
3 ответа
Просто делай
b.end_time - b.start_time
Результатом является значение INTERVAL DAY TO SECOND
, см. INTERVAL
Чтобы получить часы и минуты, вы можете использовать SUBSTR
/ REGEX_SUBSTR
/ REGEXP_REPLACE
или ДОПОЛНИТЕЛЬНО
REGEXP_REPLACE((b.end_time - b.start_time), '.*(\d{2}:\d{2}):\d{2}.*', '\1')
EXTRACT(HOUR FROM (b.end_time - b.start_time))||':'||EXTRACT(minute FROM (b.end_time - b.start_time))
Вы можете вычесть время в Oracle. Убедитесь, что ваш тип данных находится в формате Datetime и умножьте его на 24, чтобы получить часы и 24 * 60 для минут.
(b.end_time - b.start_time) * 24 --For Hours
(b.end_time - b.start_time) * 24*60 --For Minutes
Я беру 1970 год, а затем добавляю это с разницей между start_date_time
и end_date_time
с требуемым форматом -> hh24:mi:ss
Запрос
SELECT
TO_CHAR(TO_DATE('1970-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') +(TO_DATE('2022-01-18 21:00', 'YYYY-MM-DD hh24:mi') - TO_DATE
('2022-01-18 19:10', 'YYYY-MM-DD hh24:mi')), 'hh24:mi:ss') AS human_readable_format
FROM
DUAL;
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.