DATE_FORMAT() : DATE_FORMAT « Date Time Functions « MySQL Tutorial






DATE_FORMAT() function formats the date by specifying a sequence of format strings.

A string is composed of the percentage symbol '%' followed by a formatting letter.

These are some of the more common strings to use:

SpecifierDescription
%aAbbreviated weekday name (Sun..Sat)
%bAbbreviated month name (Jan..Dec)
%cMonth, numeric (0..12)
%DDay of the month with English suffix (0th, 1st, 2nd, 3rd, )
%dDay of the month, numeric (00..31)
%eDay of the month, numeric (0..31)
%fMicroseconds (000000..999999)
%HHour (00..23)
%hHour (01..12)
%IHour (01..12)
%iMinutes, numeric (00..59)
%jDay of year (001..366)
%kHour (0..23)
%lHour (1..12)
%MMonth name (January..December)
%mMonth, numeric (00..12)
%pAM or PM
%rTime, 12-hour (hh:mm:ss followed by AM or PM)
%SSeconds (00..59)
%sSeconds (00..59)
%TTime, 24-hour (hh:mm:ss)
%UWeek (00..53), where Sunday is the first day of the week
%uWeek (00..53), where Monday is the first day of the week
%VWeek (01..53), where Sunday is the first day of the week; used with %X
%vWeek (01..53), where Monday is the first day of the week; used with %x
%WWeekday name (Sunday..Saturday)
%wDay of the week (0=Sunday..6=Saturday)
%XYear for the week where Sunday is the first day of the week, numeric, four digits; used with %V
%xYear for the week, where Monday is the first day of the week, numeric, four digits; used with %v
%YYear, numeric, four digits
%yYear, numeric (two digits)
%%A literal '%' character
%xx, for any 'x' not listed above


Upper and Lowercase letters in the string make a difference.

When arranging these strings into a sequence you can intersperse 'normal' characters.

Syntax:

DATE_FORMAT(date, sequence)
mysql>
mysql> CREATE TABLE Employee(
    ->     id            int,
    ->     first_name    VARCHAR(15),
    ->     last_name     VARCHAR(15),
    ->     start_date    DATE,
    ->     end_date      DATE,
    ->     salary        FLOAT(8,2),
    ->     city          VARCHAR(10),
    ->     description   VARCHAR(15)
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql>
mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->              values (1,'Jason',    'Martin',  '19960725',  '20060725', 1234.56, 'Toronto',  'Programmer');
Query OK, 1 row affected (0.01 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(2,'Alison',   'Mathews',  '19760321', '19860221', 6661.78, 'Vancouver','Tester');
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(3,'James',    'Smith',    '19781212', '19900315', 6544.78, 'Vancouver','Tester');
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(4,'Celia',    'Rice',     '19821024', '19990421', 2344.78, 'Vancouver','Manager');
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(5,'Robert',   'Black',    '19840115', '19980808', 2334.78, 'Vancouver','Tester');
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(6,'Linda',    'Green',    '19870730', '19960104', 4322.78,'New York',  'Tester');
Query OK, 1 row affected (0.02 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(7,'David',    'Larry',    '19901231', '19980212', 7897.78,'New York',  'Manager');
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(8,'James',    'Cat',     '19960917',  '20020415', 1232.78,'Vancouver', 'Tester');
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> select * from Employee;
+------+------------+-----------+------------+------------+---------+-----------+-------------+
| id   | first_name | last_name | start_date | end_date   | salary  | city      | description |
+------+------------+-----------+------------+------------+---------+-----------+-------------+
|    1 | Jason      | Martin    | 1996-07-25 | 2006-07-25 | 1234.56 | Toronto   | Programmer  |
|    2 | Alison     | Mathews   | 1976-03-21 | 1986-02-21 | 6661.78 | Vancouver | Tester      |
|    3 | James      | Smith     | 1978-12-12 | 1990-03-15 | 6544.78 | Vancouver | Tester      |
|    4 | Celia      | Rice      | 1982-10-24 | 1999-04-21 | 2344.78 | Vancouver | Manager     |
|    5 | Robert     | Black     | 1984-01-15 | 1998-08-08 | 2334.78 | Vancouver | Tester      |
|    6 | Linda      | Green     | 1987-07-30 | 1996-01-04 | 4322.78 | New York  | Tester      |
|    7 | David      | Larry     | 1990-12-31 | 1998-02-12 | 7897.78 | New York  | Manager     |
|    8 | James      | Cat       | 1996-09-17 | 2002-04-15 | 1232.78 | Vancouver | Tester      |
+------+------------+-----------+------------+------------+---------+-----------+-------------+
8 rows in set (0.01 sec)

mysql>
mysql>
mysql>
mysql> SELECT first_name, DATE_FORMAT(start_date, '%d-%m-%Y')
    -> FROM employee;
+------------+-------------------------------------+
| first_name | DATE_FORMAT(start_date, '%d-%m-%Y') |
+------------+-------------------------------------+
| Jason      | 25-07-1996                          |
| Alison     | 21-03-1976                          |
| James      | 12-12-1978                          |
| Celia      | 24-10-1982                          |
| Robert     | 15-01-1984                          |
| Linda      | 30-07-1987                          |
| David      | 31-12-1990                          |
| James      | 17-09-1996                          |
+------------+-------------------------------------+
8 rows in set (0.01 sec)

mysql>
mysql>
mysql> drop table Employee;
Query OK, 0 rows affected (0.00 sec)

mysql>








14.11.DATE_FORMAT
14.11.1.DATE_FORMAT()
14.11.2.Dates can also be formatted in 'plain english'
14.11.3.Using DATE_FORMAT() with an alias to tidy up the title
14.11.4.%a: Abbreviated weekday name (Sun..Sat)
14.11.5.%b: Abbreviated month name (Jan..Dec)
14.11.6.%c: Month, numeric (0..12)
14.11.7.%D: Day of the month with English suffix (0th, 1st, 2nd, 3rd, ...)
14.11.8.%d: Day of the month, numeric (00..31)
14.11.9.%e: Day of the month, numeric (0..31)
14.11.10.%f: Microseconds (000000..999999)
14.11.11.%H: Hour (00..23)
14.11.12.%h: Hour (01..12)
14.11.13.%I: Hour (01..12)
14.11.14.%i: Minutes, numeric (00..59)
14.11.15.%j: Day of year (001..366)
14.11.16.%k: Hour (0..23)
14.11.17.%l: Hour (1..12)
14.11.18.%M: Month name (January..December)
14.11.19.%m: Month, numeric (00..12)
14.11.20.%p: AM or PM
14.11.21.%r: Time, 12-hour (hh:mm:ss followed by AM or PM)
14.11.22.%S: Seconds (00..59)
14.11.23.%T: Time, 24-hour (hh:mm:ss)
14.11.24.%U: Week (00..53), where Sunday is the first day of the week
14.11.25.%u: Week (00..53), where Monday is the first day of the week
14.11.26.%V: Week (01..53), where Sunday is the first day of the week; used with %X
14.11.27.%v: Week (01..53), where Monday is the first day of the week
14.11.28.%W: Weekday name (Sunday..Saturday)
14.11.29.%w: Day of the week (0=Sunday..6=Saturday)
14.11.30.%X: Year for the week where Sunday is the first day of the week, numeric, four digits
14.11.31.%x: Year for the week, where Monday is the first day of the week, numeric, four digits
14.11.32.%Y: Year, numeric, four digits
14.11.33.%y: Year, numeric (two digits)
14.11.34.%%: A literal '%' character
14.11.35.SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
14.11.36.SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
14.11.37.SELECT DATE_FORMAT('1997-10-04 22:23:00','%D %y %a %d %m %b %j');
14.11.38.SELECT DATE_FORMAT('1997-10-04 22:23:00','%H %k %I %r %T %S %w');
14.11.39.SELECT DATE_FORMAT('1999-01-01', '%X %V');
14.11.40.SELECT DATE_FORMAT('2006-06-00', '%d');