DATE and DATETIME data types
Informix®
Informix provides two data types to store date and time information:
DATE= for year, month and day storage.DATETIME= for year to fraction (1-5) storage.
The DATE type is stored as an INTEGER with the number of days
since 1899/12/31.
The DATETIME type can be defined with various time units, by specifying a start
and end qualifier. For example, you can define a datetime to store an hour-to-second time value with
DATETIME HOUR TO SECOND.
DATETIME can be represented with a character string literal, or as
DATETIME()
literals:'2017-12-24 15:45:12.345' -- a DATETIME YEAR TO FRACTION(3)
'15:45' -- a DATETIME HOUR TO MINUTE
DATETIME(2017-12-24 12:45) YEAR TO MINUTE
DATETIME(12:45:56.333) HOUR TO FRACTION(3)DATE / DATETIME data, if the string contains matching environment
parameters. The string to date conversion rules for DATE is defined by the DBDATE
environment variable. The string to datetime format for DATETIME is defined by the
GL_DATETIME environment variable.DATETIME values is always ISO (YYYY-MM-DD hh:mm:ss.fffff)
Informix supports date arithmetic on
DATE and DATETIME values. The result of an arithmetic expression
involving dates/times is an INTEGER number of days when only DATE values are used,
and an INTERVAL value if a DATETIME is used in the expression.
Informix automatically converts an
INTEGER to a DATE when the integer is used to set a value of a
date column.
Netezza®
Netezza supports the following data types to store date/time values:
| Netezza data type | Description |
|---|---|
DATE |
for year, month, day storage |
TIME |
for hour, minute, second, fraction with (6 decimal positions) |
TIME WITH TIME ZONE / TIMETZ |
same as TIME, with time zone
information |
TIMESTAMP |
for year, month, day, hour, minute, second, fraction (with 6 decimal positions) |
Like Informix, Netezza can convert quoted strings to date time data. Netezza accepts different date formats, including ISO date time strings, and you can specify
the cast operator (::date, ::time, ::timestamp)
after the string literal.
With Netezza, the result of an arithmetic expression
involving DATE values is an INTEGER representing a number of
days.
Complex DATETIME expressions (involving INTERVAL values for
example) are Informix specific and have no equivalent in
Netezza.
Solution
Use the following conversion rules to map Informix date/time types to Netezza date/time types:
| Informix data type | Netezza data type |
|---|---|
DATE |
DATE |
DATETIME HOUR TO SECOND |
TIME |
DATETIME YEAR TO FRACTION(p) |
TIMESTAMP |
DATE and
DATETIME types translation can be controlled with the following FGLPROFILE
entries:dbi.database.dsname.ifxemul.datatype.date = { true | false }
dbi.database.dsname.ifxemul.datatype.datetime = { true | false }
For more details see IBM Informix emulation parameters in FGLPROFILE.Netezza and Informix DATE data type are equivalent and store year, month, day values.
Netezza TIME data type can be used to
store Informix DATETIME HOUR TO SECOND
values. The database interface makes the conversion automatically.
Informix DATETIME values with any
precision from YEAR to FRACTION(5) can be stored in Netezza TIMESTAMP columns. The database
interface makes the conversion automatically. Missing date or time parts default to 1900-01-01
00:00:00.0. For example, when using a DATETIME HOUR TO MINUTE with the value of
"11:45", the Netezza TIMESTAMP value will be "1900-01-01
11:45:00.0".
DATE/DATETIME conversions, for example you can use a DATE variable
when the target column is a DATETIME. This is not possible with Netezza: The type of the SQL parameter must match the type of the column in
the database table. Make sure that you are using the same type for the SQL parameter and the target
column, DATE/DATETIME implicit conversion is not supported by Netezza.