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