Table of Contents
MySQL Date/Time
For storing a date or a date/time value in MySQL, the following data types are available:
- DATE – format YYYY-MM-DD
- DATETIME – format: YYYY-MM-DD HH:MI:SS
- TIMESTAMP – format: YYYY-MM-DD HH:MI:SS
- YEAR – format YYYY or YY
DATE() function
The date portion of a date or datetime expression is extracted.
Example:
mysql> SELECT DATE('2022-12-30 01:02:03'); -> '2022-12-30'
ADDDATE() function
ADDDATE() is a synonym for DATE ADD when called using the INTERVAL form of the second argument (). DATE SUB is a synonym for the related function SUBDATE() (). Temporal Intervals has more information on the INTERVAL unit argument.
Example:
mysql> SELECT DATE_ADD('2022-01-02', INTERVAL 31 DAY); -> '2022-02-02' mysql> SELECT ADDDATE('2022-01-02', INTERVAL 31 DAY); -> '2022-02-02'
CURDATE() function
Depending on whether the function is used in a string or numeric context, it returns the current date as a value in the ‘YYYY-MM-DD’ or ‘YYYYMMDD’ format.
Example:
mysql> SELECT CURDATE(); -> '2022-06-13' mysql> SELECT CURDATE() + 0; -> 20220613
DATE_ADD() function
Date arithmetic is performed by these functions. The starting date or datetime value is specified by the date parameter. The interval value to be added or subtracted from the starting date is specified by expr, which is an expression. expr is evaluated as a string; for negative intervals, it may begin with a -. unit is a keyword that specifies how the expression should be understood in units.
Example:
mysql> SELECT DATE_ADD('2022-05-01',INTERVAL 1 DAY); -> '2022-05-02' mysql> SELECT DATE_ADD('2020-12-31 23:59:59', -> INTERVAL 1 SECOND); -> '2022-01-01 00:00:00' mysql> SELECT DATE_ADD('2022-12-31 23:59:59', -> INTERVAL 1 DAY); -> '2022-01-01 23:59:59'
DATE_FORMAT() function
The date value is formatted according to the format string.
The format string can include the specifiers shown in the table below. Before format specifier characters, the percent character is necessary. Other functions that use the specifiers are STR TO DATE(), TIME FORMAT(), and UNIX TIMESTAMP() ().
DATEDIFF() function
DATEDIFF() returns the difference in days (in number of days) between two dates, expr1 and expr2. Date or date-and-time expressions are expr1 and expr2. In the calculation, just the date sections of the data are considered.
Example:
mysql> SELECT DATEDIFF('2022-12-31 23:59:59','2022-12-30'); -> 1 mysql> SELECT DATEDIFF('2022-11-30 23:59:59','2022-12-31'); -> -31
DAY() function
DAYOFMONTH is a synonym for DAY() .So there are multiple DAY() functions which are as follow.
DAYNAME() function
DAYNAME(date)
For date, returns the name of the weekday. The value of the time names system variable determines the language used for the name.
mysql> SELECT DAYNAME('2022-02-03'); -> 'Saturday'
DAYOFMONTH() function
DAYOFMONTH(date)
Returns the month day for date, in the range 1 to 31, or 0 for dates having a zero day part, such as ‘0000-00-00’ or ‘2022-00-00’.
Example:
mysql> SELECT DAYOFMONTH('2022-02-03'); -> 3
DAYOFWEEK() function
The weekday index for the given day (1 = Sunday, 2 = Monday,…, 7 = Saturday) is returned. The ODBC standard is followed by these index values.
Example:
mysql> SELECT DAYOFWEEK('2022-02-03'); -> 7
DAYOFYEAR() function
In the range 1 to 366, this function returns the day of the year for the given date.
Example:
mysql> SELECT DAYOFYEAR('2022-02-03'); -> 34
From_days() function
Returns a DATE value given a day number N.
mysql> SELECT FROM_DAYS(730669); -> '2022-07-03'
Hour() function
For time, it returns the hour. For time-of-day values, the return result ranges from 0 to 23. TIME, on the other hand, has a considerably wider range of values, therefore HOUR can return numbers greater than 23.
mysql> SELECT HOUR('10:05:03'); -> 10 mysql> SELECT HOUR('272:59:59'); -> 272
For time, it returns the hour. For time-of-day values, the return result ranges from 0 to 23. TIME, on the other hand, has a considerably wider range of values, therefore HOUR can return numbers greater than 23.
ADDTIME() function
ADDTIME() delivers the result of adding expr2 to expr1. A time or datetime expression is expr1, and a time expression is expr2.
The return type of this method and the SUBTIME() function has been decided as follows since MySQL 8.0.28:
The return type is TIME if the first input is a dynamic parameter (as in a prepared statement).
Otherwise, the function’s resolved type is obtained from the first argument’s resolved type
Example:
mysql> SELECT ADDTIME('2022-12-31 23:59:59.999999', '1 1:1:1.000002'); -> '2022-01-02 10:10:10.100001' mysql> SELECT ADDTIME('10:01:01.999999', '02:00:00.999998'); -> '03:00:01.999997'
CURRENT_TIME() function
Depending on whether the function is called in a string or numeric environment, it returns the current time as a value in the ‘hh:mm:ss’ or hhmmss format. The time zone of the session is used to express the value.
The return value contains a fractional seconds component of that many digits if the fsp option is used to indicate a fractional seconds precision from 0 to 6.
Example:
mysql> SELECT CURTIME(); -> '23:50:26' mysql> SELECT CURTIME() + 0; -> 235026.000000
CURRENT_TIMESTAMP() function
Depending on whether the function is called in a string or numeric environment, it returns the current time as a value in the ‘hh:mm:ss’ or hhmmss format. The time zone of the session is used to express the value.
CURTIME() function
Depending on whether the function is called in a string or numeric environment, it returns the current time as a value in the ‘hh:mm:ss’ or hhmmss format. The time zone of the session is used to express the value.
Example:
mysql> SELECT CURTIME(); -> '23:50:26' mysql> SELECT CURTIME() + 0; -> 235026.000000
last_day() function
Returns the equivalent value for the last day of the month given a date or datetime value.
Example:
mysql> SELECT LAST_DAY('2022-02-05'); -> '2022-02-28' mysql> SELECT LAST_DAY('2022-02-05'); -> '2022-02-29' mysql> SELECT LAST_DAY('2022-01-01 01:01:01'); -> '2022-01-31' mysql> SELECT LAST_DAY('2022-03-32'); -> NULL
localtime() function
NOW is a synonym for LOCALTIME and LOCALTIME() ().
mysql> SELECT NOW(); -> '2022-12-15 23:50:26' mysql> SELECT NOW() + 0; -> 20221215235026.000000
localtimestamp() function
Returns a date, year, and day-of-year values for a given year. The value of dayofyear must be larger than 0; else, the result will be NULL.
The current date and time are returned by the LOCALTIMESTAMP() method.
Note that the date and time are returned as a string (YYYY-MM-DD HH-MM-SS) or as YYYYMMDDHHMMSS.
Syntax:
LOCALTIMESTAMP()
Example:
SELECT LOCALTIMESTAMP() + 1;
Output
LOCALTIMESTAMP() + 1 |
20220310035550 |
makedate() function
Create a date based on a year and several days value and return it:
Example:
SELECT MAKEDATE(2022, 3);
maketime() function
Make a time value from an hour, minute, and second value and return it:
SELECT MAKETIME(11, 35, 4);
Output
MAKETIME(11, 35, 4) |
11:35:04 |
microsecond() function
Return the part of a datetime that is in microseconds:
Example
MICROSECOND(“2022-06-20 09:34:00.000023”) |
23 |
minute() function
The minute portion of a datetime value is returned:
Example:
SELECT MINUTE(“2022-06-20 09:34:00”);
Output
MINUTE(“2022-06-20 09:34:00”) |
34 |
month() function
The month part of a date should be returned:
Example:
SELECT MONTH(“2022-06-15”);
Output
MONTH(“2022-06-15”) |
6 |
monthname() function
For a date, return the month’s name:
SELECT MONTHNAME(“2022-06-15”);
Output
MONTHNAME(“2022-06-15”) |
June |
To make a period longer, add a specific number of months.
now() function
Return current date and time:
Output
NOW() |
2022-03-15 03:03:41 |
period_add() function
To make a period longer, add a specific number of months:
SELECT PERIOD_ADD(202203, 15);
Output
PERIOD_ADD(202203, 15) |
202206 |
period_diff() function
Calculate the difference between the two periods as follows:
Output
PERIOD_DIFF(202210, 202203) |
7 |
For the date, please return the year’s quarter:
quarter() function
For a given date value, the QUARTER() method returns the year’s quarter (a number from 1 to 4).
January-March returns 1
April-June returns 2
July-Sep returns 3
Oct-Dec returns 4
SELECT QUARTER(“2022-06-15”);
Output
QUARTER(“2022-06-15”) |
2 |
sec_to_time() function
Return a time value based on the seconds value specified:
mysql> SELECT SEC_TO_TIME(2378) + 0;
-> 3938
second() function
Return the part of a time value that is in seconds:
SELECT SECOND(“23:59:59”);
Output
Second(“23:59:59”) |
59 |
str_to_date() function
Get a date using a string and a format:
mysql> SELECT STR_TO_DATE('01,5,2022','%d,%m,%Y'); -> '2022-05-01' mysql> SELECT STR_TO_DATE('May 1, 2022','%M %d,%Y'); -> '2022-05-01'
Subdate() function
Subtract 10 days from a date and recalculate it as follows:
SUBDATE(“2022-06-15”, INTERVAL 10 DAY) |
2022-06-05 |
Subtime() function
Subtract 3 minutes from the time and recalculate:
SELECT SUBTIME(“10:24:21”, “300”);
Output
10:21:21
Sysdate() function
Return the current date and time
Select sysdate();
Output
2022-03-21 02:56:28
time() function
Take the time portion of a time expression and extract it.
Example
SELECT TIME(“19:30:10”);
Output
19:30:10
time_format() function
The TIME FORMAT() method applies a specified format to a time.
Output
TIME_FORMAT(“19:30:10”, “%h %i %s %p”) |
07 30 10 PM |
time_to_sec() function
Helps in converting time into seconds
SELECT TIME_TO_SEC(“19:30:10”);
Output
TIME_TO_SEC(“19:30:10”) |
70210 |
timediff() function
Helps in returning difference between two time/datetime expressions
SELECT TIMEDIFF(“2022-06-25 13:10:11”, “2022-06-15 13:10:10”);
Output
TIMEDIFF(“2022-06-25 13:10:11”, “2022-06-15 13:10:10”) |
240:00:01 |
timestamp() function
Return a datetime (timestamp) value based on the arguments:
SELECT TIMESTAMP(“2022-07-23”);
Output
TIMESTAMP(“2022-07-23”) |
2022-07-23 00:00:00 |
to_day() function
Helps in returning days between the date and year
For a given date, return the week number
SELECT TO_DAYS(“2022-06-20”);
TO_DAYS(“2022-06-20 09:34:00”) |
736865 |
weekday() function
For a specific date, get the weekday number:
SELECT WEEKDAY(“2022-01-01”);
Output
WEEKDAY(“2022-01-01”) |
6 |
week() function
For a given date, return the week number
SELECT WEEK(“2022-06-15”);
Output
WEEK(“2022-06-15”) |
24 |
weekofyear() function
For a given date, return the week number:
SELECT WEEKOFYEAR(“2022-06-15”);
Output
WEEK(“2022-06-15”) |
24 |
0 Comments