SELECT DECODE (d, 0, NULL, 1, '1 day ', TO_CHAR (d) || ' days ')
|| DECODE (h, 0, NULL, 1, '1 hour ', TO_CHAR (h) || ' hours ')
|| DECODE (m, 0, NULL, 1, '1 minute ', TO_CHAR (m) || ' minutes ')
|| DECODE (s, 0, NULL, 1, '1 second', TO_CHAR (s) || ' seconds')
FROM (SELECT EXTRACT (DAY FROM (dt)) d, EXTRACT (HOUR FROM (dt)) h, EXTRACT (MINUTE FROM (dt)) m, EXTRACT (SECOND FROM (dt)) s
FROM (SELECT NUMTODSINTERVAL (:HOUR_DEPARTURE - :DATE_LOADING, 'DAY') AS dt FROM DUAL))
Для удовольствия:
SELECT DECODE (y, 0, NULL, 1, '1 year ', TO_CHAR (y) || ' years ')
|| DECODE (m, 0, NULL, 1, '1 month ', TO_CHAR (m) || ' months ')
|| DECODE (d, 0, NULL, 1, '1 day ', TO_CHAR (d) || ' days ')
|| DECODE (h, 0, NULL, 1, '1 hour ', TO_CHAR (h) || ' hours ')
|| DECODE (mi, 0, NULL, 1, '1 minute ', TO_CHAR (mi) || ' minutes ')
|| DECODE (s, 0, NULL, 1, '1 second', TO_CHAR (s) || ' seconds')
FROM (SELECT EXTRACT (YEAR FROM (ym)) y,EXTRACT (MONTH FROM (ym)) m,
EXTRACT (DAY FROM (dt)) d, EXTRACT (HOUR FROM (dt)) h, EXTRACT (MINUTE FROM (dt)) mi, EXTRACT (SECOND FROM (dt)) s
FROM (SELECT NUMTOYMINTERVAL (MONTHS_BETWEEN (:HOUR_DEPARTURE, :DATE_LOADING), 'MONTH') AS ym ,
NUMTODSINTERVAL (ADD_MONTHS(:HOUR_DEPARTURE,-MONTHS_BETWEEN (:HOUR_DEPARTURE, :DATE_LOADING)) - :DATE_LOADING, 'DAY') AS dt
FROM DUAL
)
)
Какой формат вы хотите получить от ответа? Надеюсь, вы хотите 01:00:05, а не то, что вы написали (строка: 1 час и 5 секунд). Кроме того, как вы хотите, чтобы результат показывался, если разница составляет 40 часов? – mathguy
@ AjayPunekar - это не дубликат; связанный с вами вопрос не имеет никакого отношения к форматированию, что является единственной проблемой здесь. – mathguy
Что это имеет отношение к [тегу: C#] и [тег: asp.net]? – Kritner