Domanda

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


day = 15
mon = 2
year = 1
È stato utile?

Soluzione

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.

Altri suggerimenti

Use the MDY function :

select mdy(2,15,2014) - mdy(1,15,2014) from sysmaster:sysdual
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top