Date Functions
Current Date/Time Functions
- There are a number of functions that give the current date and time. The DATE() function is a date formatting function, but I include it in the list because it is often confused with the NOW() function
- CURRENT_DATE, CURRENT_TIME, UTC_DATE, UTC_TIME can be used with the parentheses “()” or not. They accept no parameters
Table 1. Current Date Functions
Function |
Type |
Example |
Result |
NOW() * Returns current local date and time. |
date/time |
NOW() |
ex. ‘2020-02-24 09:31:31’ |
DATE(date) * extracts the date from input. If time is included, the time is dropped. |
date/time |
DATE('2020-01-01 11:31:31') |
‘2020-02-24’ |
CURRENT_DATE() * Returns current local date |
date |
CURRENT_DATE |
‘2020-02-24’ |
CURRENT_TIME() * Returns current local time. |
time |
CURRENT_TIME |
‘11:52:10’ |
UTC_DATE() * Returns current UTC date. |
date |
UTC_DATE |
‘2020-02-24’ |
UTC_TIME() * Returns current UTC date. |
time |
UTC_TIME |
‘18:52:10’ |
SELECT NOW() AS 'NOW()',
DATE('2020-01-01') AS 'DATE(), date only',
CURRENT_DATE AS 'CURRENT_DATE',
CURRENT_TIME AS 'CURRENT_TIME',
UTC_DATE AS 'UTC_DATE',
UTC_TIME AS 'UTC_TIME';
Results:
DATE_ADD
• Returns a date with a DATE or DATETIME value equal to the original value plus the specified interval.
Table 2. DATE_ADD Function
Function |
Type |
Example |
Result |
DATE_ADD(date, interval expression unit) |
DATE, DATETIME |
DATE_ADD(‘2020-01-01’, INTERVAL 1 DAY) |
‘202-01-02’ |
Code Snippet:
USE bike;
SELECT order_date,
DATE_ADD(order_date, INTERVAL 1 DAY) AS 'ORDER DATE PLUS 1 day',
DATE_ADD(order_date, INTERVAL 6 MONTH) AS 'ORDER DATE PLUS 6 months',
DATE_ADD(order_date, INTERVAL '2 12' DAY_HOUR)
AS 'ORDER DATE PLUS 2 days 1 hour'
FROM cust_order;
Results:
DATE_FORMAT
• Dates must be enclosed in quotes • You can pass a DATE or DATETIME datatype to DATE_FORMAT
Table 3. DATE_FORMAT Function
Function |
Type |
Example |
Result |
DATE_FORMAT |
DATE |
DATE_FORMAT(‘2020-09-03’, ‘%m/%d/%y’) |
09/03/14 |
Code Snippet:
USE world;
SELECT name, continent, DATE_FORMAT('2020-01-28', '%m/%d/%y')
FROM country;
Results:
Table 4. Format List
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; WEEK() mode 0 |
%u |
Week (00..53), where Monday is the first day of the week; WEEK() mode 1 |
%V |
Week (01..53), where Sunday is the first day of the week; WEEK() mode 2; used with %X |
%v |
Week (01..53), where Monday is the first day of the week; WEEK() mode 3; 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 |
x, for any “x” not listed above |
DATEDIFF
- The DATEDIFF function has two parameters. Both are dates.
- The value returned by the function is an integer and is the number of days between the two dates.
- If you provide the latest date, first the results will be positive. Otherwise, it will be negative.
Example:
SELECT DATEDIFF('2018-01-01', '2019-01-01')
AS 'Date Difference';
Results:

CC BY-NC-ND International 4.0: This work is released under a CC BY-NC-ND International 4.0 license, which means that you are free to do with it as you please as long as you (1) properly attribute it, (2) do not use it for commercial gain, and (3) do not create derivative works.
End-of-Chapter Survey
: How would you rate the overall quality of this chapter?- Very Low Quality
- Low Quality
- Moderate Quality
- High Quality
- Very High Quality