The date and time types are DATETIME
, DATE
,
TIMESTAMP
, TIME
, and YEAR
. Each of these has a
range of legal values, as well as a ``zero'' value that is used when you
specify a really illegal value. Note that MySQL allows you to store
certain 'not strictly' legal date values, for example 1999-11-31
.
The reason for this is that we think it's the responsibility of the
application to handle date checking, not the SQL servers. To make the
date checking 'fast', MySQL only checks that the month is in
the range of 0-12 and the day is in the range of 0-31. The above ranges
are defined this way because MySQL allows you to store, in a
DATE
or DATETIME
column, dates where the day or month-day
is zero. This is extremely useful for applications that need to store
a birth-date for which you don't know the exact date. In this case you
simply store the date like 1999-00-00
or 1999-01-00
. (You
cannot expect to get a correct value from functions like DATE_SUB()
or DATE_ADD
for dates like these.)
Here are some general considerations to keep in mind when working with date and time types:
'98-09-04'
), rather than
in the month-day-year or day-month-year orders commonly used elsewhere (for
example, '09-04-98'
, '04-09-98'
).
TIME
values are clipped to
the appropriate endpoint of the TIME
range.) The following table
shows the format of the ``zero'' value for each type:
Column type | ``Zero'' value |
DATETIME | '0000-00-00 00:00:00'
|
DATE | '0000-00-00'
|
TIMESTAMP | 00000000000000 (length depends on display size)
|
TIME | '00:00:00'
|
YEAR | 0000
|
'0'
or 0
, which are easier to write.
MyODBC
are converted
automatically to NULL
in MyODBC
Version 2.50.12 and above,
because ODBC can't handle such values.
DATETIME
, DATE
, and TIMESTAMP
TypesTIME
TypeYEAR
Type