SQL - 日付間の差を年月日で表現
DECLARE
d1 DATE;
d2 DATE;
years NUMBER;
months NUMBER;
days NUMBER;
BEGIN
d1 := to_date( '09-JUL-2007', 'DD-MON-YYYY' );
d2 := to_date( '24-JUL-1995', 'DD-MON-YYYY' );
years := trunc( months_between( d1, d2 ) / 12 );
months := mod( trunc( months_between( d1, d2 ) ), 12 );
days := d1 - add_months(d2,trunc( months_between( d1, d2 ) ));
dbms_output.put_line( 'years = ' || years);
dbms_output.put_line( 'months = ' || months);
dbms_output.put_line( 'days = ' || days);
END;
DECLARE
d1 DATE;
d2 DATE;
years NUMBER;
months NUMBER;
days NUMBER;
hours NUMBER;
minutes NUMBER;
seconds NUMBER;
BEGIN
d1 := to_date( '09-JUL-2007 23:10:43', 'DD-MON-YYYY HH24:MI:SS' );
d2 := to_date( '24-JUL-1995 10:09:40', 'DD-MON-YYYY HH24:MI:SS' );
years := trunc( months_between( d1, d2 ) / 12 );
months := mod( trunc( months_between( d1, d2 ) ), 12 );
days := trunc(d1 - add_months(d2,trunc( months_between( d1, d2 ) )));
hours := trunc( mod( (d1-d2)*24, 24 ) );
minutes := trunc( mod( (d1-d2)*24*60, 60 ) );
seconds := trunc( mod( (d1-d2)*24*60*60, 60 ) );
dbms_output.put_line( 'years = ' || years);
dbms_output.put_line( 'months = ' || months);
dbms_output.put_line( 'days = ' || days);
dbms_output.put_line( 'hours = ' || hours);
dbms_output.put_line( 'minutes = ' || minutes);
dbms_output.put_line( 'seconds = ' || seconds);
END;
--------------------------------------------***