Formats the date value according to
the format string.
The following specifiers may be used in the format string. The “%” character is required before format specifier
characters.
| Specifier | Description |
%a |
Abbreviated weekday name (Sun..Sat) |
%b |
Abbreviated month name (Jan..Dec) |
%c |
Month, numeric (0..12) |
%D |
Day of the month with English suffix (0th, 1st, 2nd, 3rd, …) |
%d |
Day of the month, numeric (00..31) |
%e |
Day of the month, numeric (0..31) |
%f |
Microseconds (000000..999999) |
%H |
Hour (00..23) |
%h |
Hour (01..12) |
%I |
Hour (01..12) |
%i |
Minutes, numeric (00..59) |
%j |
Day of year (001..366) |
%k |
Hour (0..23) |
%l |
Hour (1..12) |
%M |
Month name (January..December) |
%m |
Month, numeric (00..12) |
%p |
AM or PM
|
%r |
Time, 12-hour (hh:mm:ss followed by AM or PM) |
%S |
Seconds (00..59) |
%s |
Seconds (00..59) |
%T |
Time, 24-hour (hh:mm:ss) |
%U |
Week (00..53), where
Sunday is the first day of the week |
%u |
Week (00..53), where
Monday is the first day of the week |
%V |
Week (01..53), where
Sunday is the first day of the week; used with %X
|
%v |
Week (01..53), where
Monday is the first day of the week; used with %x
|
%W |
Weekday name (Sunday..Saturday) |
%w |
Day of the week (0=Sunday..6=Saturday) |
%X |
Year for the week where Sunday is the first day of the week, numeric, four
digits; used with %V
|
%x |
Year for the week, where Monday is the first day of the week, numeric, four
digits; used with %v
|
%Y |
Year, numeric, four digits |
%y |
Year, numeric (two digits) |
%% |
A literal “%”
character |
% |
x, for any “x” not listed
above |
Ranges for the month and day specifiers begin with zero due to the fact that
MySQL allows the storing of incomplete dates such as \'2014-00-00\'.
As of MySQL 5.1.12, the language used for day and month names and
abbreviations is controlled by the value of the lc_time_names system variable (Section 9.8, “MySQL
Server Locale Support”).
As of MySQL 5.1.15, DATE_FORMAT() returns a string with a character set and
collation given by character_set_connection and collation_connection so that it can return month and
weekday names containing non-ASCII characters. Before 5.1.15, the return value
is a binary string.
mysql>SELECT DATE_FORMAT(\'2009-10-04 22:23:00\', \'%W %M %Y\');
-> \'Sunday October 2009\'
mysql>SELECT DATE_FORMAT(\'2007-10-04 22:23:00\', \'%H:%i:%s\');
-> \'22:23:00\'
mysql>SELECT DATE_FORMAT(\'1900-10-04 22:23:00\',
->\'%D %y %a %d %m %b %j\');
-> \'4th 00 Thu 04 10 Oct 277\'
mysql>SELECT DATE_FORMAT(\'1997-10-04 22:23:00\',
->\'%H %k %I %r %T %S %w\');
-> \'22 22 10 10:23:00 PM 22:23:00 00 6\'
mysql>SELECT DATE_FORMAT(\'1999-01-01\', \'%X %V\');
-> \'1998 52\'
mysql>SELECT DATE_FORMAT(\'2006-06-00\', \'%d\');
-> \'00\'
GET_FORMAT({DATE|TIME|DATETIME},
{\'EUR\'|\'USA\'|\'JIS\'|\'ISO\'|\'INTERNAL\'})
Returns a format string. This function is useful in combination with the DATE_FORMAT() and the STR_TO_DATE() functions.
The possible values for the first and second arguments result in several
possible format strings (for the specifiers used, see the table in the DATE_FORMAT() function description). ISO format refers
to ISO 9075, not ISO 8601.
| Function Call | Result |
GET_FORMAT(DATE,\'USA\') |
\'%m.%d.%Y\' |
GET_FORMAT(DATE,\'JIS\') |
\'%Y-%m-%d\' |
GET_FORMAT(DATE,\'ISO\') |
\'%Y-%m-%d\' |
GET_FORMAT(DATE,\'EUR\') |
\'%d.%m.%Y\' |
GET_FORMAT(DATE,\'INTERNAL\') |
\'%Y%m%d\' |
GET_FORMAT(DATETIME,\'USA\') |
\'%Y-%m-%d %H.%i.%s\' |
GET_FORMAT(DATETIME,\'JIS\') |
\'%Y-%m-%d %H:%i:%s\' |
GET_FORMAT(DATETIME,\'ISO\') |
\'%Y-%m-%d %H:%i:%s\' |
GET_FORMAT(DATETIME,\'EUR\') |
\'%Y-%m-%d %H.%i.%s\' |
GET_FORMAT(DATETIME,\'INTERNAL\') |
\'%Y%m%d%H%i%s\' |
GET_FORMAT(TIME,\'USA\') |
\'%h:%i:%s %p\' |
GET_FORMAT(TIME,\'JIS\') |
\'%H:%i:%s\' |
GET_FORMAT(TIME,\'ISO\') |
\'%H:%i:%s\' |
GET_FORMAT(TIME,\'EUR\') |
\'%H.%i.%s\' |
GET_FORMAT(TIME,\'INTERNAL\') |
\'%H%i%s\' |
TIMESTAMP can also
be used as the first argument to GET_FORMAT(), in which case the function returns the
same values as for DATETIME.
mysql> SELECT DATE_FORMAT(\'2003-10-03\',GET_FORMAT(DATE,\'EUR\'));
-> \'03.10.2003\'
mysql> SELECT STR_TO_DATE(\'10.31.2003\',GET_FORMAT(DATE,\'USA\'));
-> \'2003-10-31\'