Differenza tra due date anni-mesi-giorni-ore-minuti-secondi

di il
1 risposte

Differenza tra due date anni-mesi-giorni-ore-minuti-secondi

Salve ragazzi,

mi servirebbe il vostro aiuto, come faccio ad avere la differenza tra due date in anni-mesi-giorni-ore-minuti-secondi

non riesco a combinare i vari extract year, month, day, hour, minute e second

quello che riesco a fare è tipo questo:

SELECT
EXTRACT(DAY FROM TO_DATE('25.04.2012','DD.MM.YYYY')) - EXTRACT(DAY FROM TO_DATE('28.04.2011','DD.MM.YYYY'))"Giorno",
EXTRACT(MONTH FROM TO_DATE('25.04.2012','DD.MM.YYYY')) - EXTRACT(MONTH FROM TO_DATE('28.04.2011','DD.MM.YYYY')) "Mese",
EXTRACT(YEAR FROM TO_DATE('25.04.2012','DD.MM.YYYY')) - EXTRACT(YEAR FROM TO_DATE('28.04.2011','DD.MM.YYYY')) "Anno"
from dual;

oppure

SELECT
EXTRACT( HOUR FROM DIFF ) HOURS,
EXTRACT( MINUTE FROM DIFF ) MINUTES,
extract( second from diff ) Seconds
FROM (
SELECT (CAST('13.10.1990 00:00:01' AS TIMESTAMP) - CAST('31.01.1989:00:10:00' AS TIMESTAMP)) DIFF
from dual
);

ma se voglio fare tutto insieme non ci riesco.

Qualcuno potrebbe darmi una mano?

1 Risposte

  • Re: Differenza tra due date anni-mesi-giorni-ore-minuti-secondi

    Per il momento ho "risolto" in questo modo

    SELECT
    TRUNC(MONTHS_BETWEEN(END_DATE,START_DATE)/12) AS ANNI ,
    TRUNC(MOD( MONTHS_BETWEEN(END_DATE,START_DATE) ,12)) AS mesi,
    trunc(end_date - add_months( start_date, months_between(end_date,start_date))) as giorni,
    TRUNC(24*MOD(END_DATE - START_DATE,1)) AS ORE,
    TRUNC( MOD(MOD(END_DATE - START_DATE,1)*24,1)*60 ) AS MINUTI ,
    mod(mod(mod(end_date - start_date,1)*24,1)*60,1)*60 as secondi
    FROM ( SELECT TO_DATE('15/11/2015 11:19:58','dd/mm/yyyy hh24:mi:ss') END_DATE ,
    TO_DATE('23/12/2014 10:18:57','dd/mm/yyyy hh24:mi:ss') START_DATE
    from dual );

    ma vorrei fare una cosa più pulita
Devi accedere o registrarti per scrivere nel forum
1 risposte