A summary of the temporal data types follows. For additional information about properties and storage requirements of the temporal types, see Section 10.3, “Date and Time Types”, and Section 10.5, “Data Type Storage Requirements”. For descriptions of functions that operate on temporal values, see Section 11.7, “Date and Time Functions”.
For the DATE and
DATETIME range descriptions,
“supported” means that although earlier values
might work, there is no guarantee.
A date. The supported range is
'1000-01-01' to
'9999-12-31'. MySQL displays
DATE values in
'YYYY-MM-DD' format, but permits
assignment of values to DATE
columns using either strings or numbers.
A date and time combination. The supported range is
'1000-01-01 00:00:00' to
'9999-12-31 23:59:59'. MySQL displays
DATETIME values in
'YYYY-MM-DD HH:MM:SS' format, but permits
assignment of values to
DATETIME columns using either
strings or numbers.
A timestamp. The range is '1970-01-01
00:00:01' UTC to '2038-01-19
03:14:07' UTC.
TIMESTAMP values are stored
as the number of seconds since the epoch
('1970-01-01 00:00:00' UTC). A
TIMESTAMP cannot represent
the value '1970-01-01 00:00:00' because
that is equivalent to 0 seconds from the epoch and the value
0 is reserved for representing '0000-00-00
00:00:00', the “zero”
TIMESTAMP value.
MySQL displays TIMESTAMP
values in 'YYYY-MM-DD HH:MM:SS' format.
To convert the value to a number, add +0.
A TIMESTAMP column is useful
for recording the date and time of an
INSERT or
UPDATE operation. By default,
the first TIMESTAMP column in
a table is automatically set to the date and time of the
most recent operation if you do not assign it a value
yourself. You can also set any
TIMESTAMP column to the
current date and time by assigning it a
NULL value. The automatic initialization
and update properties can be specified using
DEFAULT and ON UPDATE
clauses, are described in Section 10.3.1.1, “TIMESTAMP Properties”.
The TIMESTAMP format that
was used prior to MySQL 4.1 is not supported in MySQL
5.5; see MySQL 3.23, 4.0, 4.1
Reference Manual for information regarding the
old format.
A time. The range is '-838:59:59' to
'838:59:59'. MySQL displays
TIME values in
'HH:MM:SS' format, but permits assignment
of values to TIME columns
using either strings or numbers.
A year in two-digit or four-digit format. The default is
four-digit format. In four-digit format, the permissible
values are 1901 to
2155, and 0000. In
two-digit format, the permissible values are
70 to 69, representing
years from 1970 to 2069. MySQL displays
YEAR values in
YYYY format, but permits assignment of
values to YEAR columns using
either strings or numbers.
The SUM() and
AVG() aggregate functions do not
work with temporal values. (They convert the values to numbers,
which loses the part after the first nonnumeric character.) To
work around this problem, convert to numeric units, perform the
aggregate operation, and convert back to a temporal value.
Examples:
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time_col))) FROMtbl_name; SELECT FROM_DAYS(SUM(TO_DAYS(date_col))) FROMtbl_name;

User Comments
To extract a timestamp in a human-readable format, use:
SELECT DATE_FORMAT(timestamp,'%l:%i:%s %p on %M %D, %Y') as ...
FROM ...
This returns:
9:15:37 PM on April 22nd, 2005
You can change the formatting or ordering in the single quotes as necessary. A complete list of the specifiers (like '%Y') are listed if you look up DATE_FORMAT.
To select from a date range with MySql timestamp using the unix_timestamp, then display in human readable format. This is great with php, when you use drop down date ranges.
The $starttime and $endtime are varibals that I passed in my php script. I also made the varibles into a unix_timestamp in php using the mktime()
select date_format(FieldWithMysqlTimestamp1, '%b-%d-%Y') as Field1, Field2, Field3, date_format(FieldWithMysqlTimestamp2, '%b-%d-%Y') as Field4 from TableName where unix_timestamp(FieldWithMysqlTimestamp1) between $starttime and $endtime
Add your own comment.