MySQL DATE_FORMAT Function

MySQL DATE_FORMAT Function

 MySQL DATE_FORMAT Function



Summary: in this tutorial, you will learn how to use the MySQL DATE_FORMAT function to format a date value based on a specific format.

Introduction to MySQL DATE_FORMAT function

To format a date value to a specific format, you use the DATE_FORMAT function. The syntax of the DATE_FORMAT the function is as follows:

DATE_FORMAT(date,format)

The DATE_FORMAT the function accepts two arguments:

  • date : is a valid date value that you want to format
  • format : is a format string that consists of predefined specifiers. Each specifier is preceded by a percentage character ( % ). See the table below for a list of predefined specifiers.

The DATE_FORMAT the function returns a string whose character set and collation depend on the settings of the client’s connection.

The following table illustrates the specifiers and the meanings that you can use to construct a date format string:

SpecifierMeaning
%aThree-characters abbreviated weekday names e.g., Mon, Tue, Wed, etc.
%bThree-characters abbreviated month name e.g., Jan, Feb, Mar, etc.
%cMonth in numeric e.g., 1, 2, 3…12
%DDay of the month with English suffix e.g., 0th, 1st, 2nd, etc.
%dDay of the month with leading zero if it is 1 number e.g., 00, 01,02, …31
%eDay of the month without leading zero e.g., 1,2,…31
%fMicroseconds in the range of 000000..999999
%HAn hour in 24-hour format with leading zero e.g., 00..23
%hAn hour in 12-hour format with leading zero e.g., 01, 02…12
%ISame as %h
%iMinutes with leading zero e.g., 00, 01,…59
%jDay of the year with leading zero e.g., 001,002,…366
%kAn hour in 24-hour format without leading zero e.g., 0,1,2…23
%lAn hour in 12-hour format without leading zero e.g., 1,2…12
%MFull month name e.g., January, February,…December
%mMonth name with leading zero e.g., 00,01,02,…12
%pAM or PM, depending on other time specifiers
%rTime in 12-hour format hh:mm:ss AM or PM
%SSeconds with leading zero 00,01,…59
%sSame as %S
%TTime in 24-hour format hh:mm:ss
%UWeek number with leading zero when the first day of the week is Sunday e.g., 00,01,02…53
%uWeek number with leading zero when the first day of the week is Monday e.g., 00,01,02…53
%VSame as %U; it is used with %X
%vSame as %u; it is used with %x
%WFull name of weekday e.g., Sunday, Monday,…, Saturday
%wWeekday in number (0=Sunday, 1= Monday, etc.)
%XYear for the week in four digits where the first day of the week is Sunday; often used with %V
%xYear for the week, where the first day of the week is Monday, four digits; used with %v
%YFour digits year e.g., 2000 and 2001.
%yTwo digits year e.g., 10,11, and 12.
%%Add percentage (%) character to the output

The following are some commonly used date format strings:

DATE_FORMAT stringFormatted date
%Y-%m-%d2013-07-04
%e/%c/%Y4/7/2013
%c/%e/%Y7/4/2013
%d/%m/%Y4/7/2013
%m/%d/%Y7/4/2013
%e/%c/%Y %H:%i4/7/2013 11:20
%c/%e/%Y %H:%i7/4/2013 11:20
%d/%m/%Y %H:%i4/7/2013 11:20
%m/%d/%Y %H:%i7/4/2013 11:20
%e/%c/%Y %T4/7/2013 11:20
%c/%e/%Y %T7/4/2013 11:20
%d/%m/%Y %T4/7/2013 11:20
%m/%d/%Y %T7/4/2013 11:20
%a %D %b %YThu 4th Jul 2013
%a %D %b %Y %H:%iThu 4th Jul 2013 11:20
%a %D %b %Y %TThu 4th Jul 2013 11:20:05
%a %b %e %YThu Jul 4, 2013
%a %b %e %Y %H:%iThu Jul 4, 2013, 11:20
%a %b %e %Y %TThu Jul 4, 2013, 11:20:05
%W %D %M %YThursday 4th July 2013
%W %D %M %Y %H:%iThursday 4th July 2013 11:20
%W %D %M %Y %TThursday 4th July 2013 11:20:05
%l:%i %p %b %e, %Y7/4/2013 11:20
%M %e, %Y4-Jul-13
%a, %d %b %Y %TThu, 04 Jul 2013 11:20:05

MySQL DATE_FORMAT examples

Let’s take a look at the orders the table in the sample database.

To select the order’s data and format the date value, you use the following statement:

SELECT orderNumber, DATE_FORMAT(orderdate, '%Y-%m-%d') orderDate, DATE_FORMAT(requireddate, '%a %D %b %Y') requireddate, DATE_FORMAT(shippedDate, '%W %D %M %Y') shippedDate FROM orders;

We formatted the order date, required date, and shipped date of each order based on different date formats specified by the format strings.

MySQL DATE_FORMAT with ORDER BY

See the following example:

SELECT orderNumber, DATE_FORMAT(shippeddate, '%W %D %M %Y') shippeddate FROM orders WHERE shippeddate IS NOT NULL ORDER BY shippeddate;

In the query, we selected all orders whose shipped dates are not NULL and sorted the orders by the shipped date. However, the orders were not sorted correctly.

The reason is that we used shippeddate it as the alias for the output of the DATE_FORMAT function, which is a string, the ORDER BY clause took the alias and sorted the orders based on string values, not date values.

To fix this problem, we have to use an alias that is different from the column name; see the following statement:

SELECT orderNumber, DATE_FORMAT(shippeddate, '%W %D %M %Y') 'Shipped date' FROM orders WHERE shippeddate IS NOT NULL ORDER BY shippeddate;

In this tutorial, we have shown you how to use the MySQL DATE_FORMAT function to format the date based on a specified format.

Reactions

Post a Comment

0 Comments

close