Dates can also be formatted in 'plain english' : DATE_FORMAT « Date Time Functions « MySQL Tutorial






DATE_FORMAT() only works with datatypes that include the date, which inlcudes DATE, DATETIME and TIMESTAMP.

There is a similar function called TIME_FORMAT() that works with TIME as well as DATETIME and TIMESTAMP.

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.00 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.02 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.00 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.02 sec)

mysql>
mysql> SELECT first_name, DATE_FORMAT(start_date, '%W the %D of %M %Y')
    -> FROM employee;
+------------+-----------------------------------------------+
| first_name | DATE_FORMAT(start_date, '%W the %D of %M %Y') |
+------------+-----------------------------------------------+
| Jason      | Thursday the 25th of July 1996                |
| Alison     | Sunday the 21st of March 1976                 |
| James      | Tuesday the 12th of December 1978             |
| Celia      | Sunday the 24th of October 1982               |
| Robert     | Sunday the 15th of January 1984               |
| Linda      | Thursday the 30th of July 1987                |
| David      | Monday the 31st of December 1990              |
| James      | Tuesday the 17th of September 1996            |
+------------+-----------------------------------------------+
8 rows in set (0.00 sec)

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

mysql>
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');