Как найти разницу между двумя датами в оракуле?Разница между двумя датами в оракуле
Я пробовал с Extract
метод, но он не работает должным образом.
Формат должен быть чч: мм: сс
Как найти разницу между двумя датами в оракуле?Разница между двумя датами в оракуле
Я пробовал с Extract
метод, но он не работает должным образом.
Формат должен быть чч: мм: сс
EXTRACT работает на DateTime или выражение интервала значений. Когда вы вычитаете две даты, вы получаете число, которое является числом дней. Если вы хотите использовать извлечение , вы должны преобразовать его в формат интервала с использованием NUMTODSINTERVAL, а затем использовать ЭКСТРАКТ.
SELECT TO_DATE ('14-01-2014 14:00:00', 'dd-mm-yyyy hh24:mi:ss')
- TO_DATE ('13-01-2014 22:30:45', 'dd-mm-yyyy hh24:mi:ss')
FROM DUAL;
0.6453125
SELECT NUMTODSINTERVAL (
TO_DATE ('14-01-2014 14:00:00', 'dd-mm-yyyy hh24:mi:ss')
- TO_DATE ('13-01-2014 22:30:45', 'dd-mm-yyyy hh24:mi:ss'),
'DAY')
FROM DUAL;
+00 15:29:15.000000
SELECT EXTRACT (HOUR FROM intrvl)
|| ':'
|| EXTRACT (MINUTE FROM intrvl)
|| ':'
|| EXTRACT (SECOND FROM intrvl)
FROM (SELECT NUMTODSINTERVAL (
TO_DATE ('14-01-2014 14:00:00', 'dd-mm-yyyy hh24:mi:ss')
- TO_DATE ('13-01-2014 22:30:45', 'dd-mm-yyyy hh24:mi:ss'),
'DAY')
AS intrvl
FROM DUAL);
15:29:15
Вы можете даже указать дату как временную метку, чтобы разница уже находилась в типе данных интервала.
SELECT EXTRACT (HOUR FROM intrvl)
|| ':'
|| EXTRACT (MINUTE FROM intrvl)
|| ':'
|| EXTRACT (SECOND FROM intrvl)
FROM (SELECT CAST (
TO_DATE ('14-01-2014 14:00:00', 'dd-mm-yyyy hh24:mi:ss') AS TIMESTAMP)
- CAST (
TO_DATE ('13-01-2014 22:30:45', 'dd-mm-yyyy hh24:mi:ss') AS TIMESTAMP)
AS intrvl
FROM DUAL);