문제

How to get the difference between two dates (informix) in integer format like that


day = 15
mon = 2
year = 1
도움이 되었습니까?

해결책

There are two sets of date/time values in Informix: DATE and DATETIME.

The DATE type is oldest (it was in the precursor to the SQL-based Informix), and represents the integer number of days since a reference date (where day 0 is 1899-12-31, so day 1 was 1900-01-01).

You get the difference between two DATE values in days by subtracting one from the other.

The DATETIME system is newer (but still old — circa 1990). You can take the difference between two DATETIME YEAR TO DAY values and get a result that is an INTERVAL DAY TO DAY (essentially the number of days).

You could also take the difference between two DATETIME YEAR TO MONTH values and get a result that is an INTERVAL YEAR TO MONTH.

However, there is no way to get a difference in years, months and days because there is no simple way to deduce that value. In fact, ISO SQL recognizes two classes of INTERVAL: those in the YEAR-MONTH group, and those in the DAY-SECOND group. You can't have an INTERVAL that crosses the MONTH/DAY barrier.

다른 팁

Use the MDY function :

select mdy(2,15,2014) - mdy(1,15,2014) from sysmaster:sysdual
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top