MySQL – Interval Operator
MySQL INTERVAL Operator
The INTERVAL operator in MySQL is used to create an interval between two different events or times. This interval can be in seconds, minutes, hours, days, etc. Thus, MySQL mainly uses this operator to perform date and time calculations, such as adding or subtracting a specified time interval from date and time values.
INTERVAL operator is used with various date and time functions, and helps in real-time scenarios for calculating the deadlines, scheduling events, etc.
Syntax
Following is the syntax of INTERVAL operator in MySQL −
INTERVAL expr unit
Where,
- expr: is a keyword that specifies the interval value.
- unit: keyword determines the interval unit (such as DAY, HOUR, MINUTE, etc.).
Note: The INTERVAL and UNIT are case-insensitive.
Standard Formats For Interval Expressions and Units
Following is the table of MySQL standard formats for the interval expressions and its corresponding unit −
unit | expr |
---|---|
DAY | DAYS |
DAY_HOUR | ”DAYS HOURS” |
DAY_MICROSECOND | ”DAYS HOURS:MINUTES:SECONDS.MICROSECONDS” |
DAY_MINUTE | ”DAYS HOURS:MINUTES” |
DAY_SECOND | ”DAYS HOURS:MINUTES:SECONDS” |
HOUR | HOURS |
HOUR_MICROSECOND | ”HOURS:MINUTES:SECONDS.MICROSECONDS” |
HOUR_MINUTE | ”HOURS:MINUTES” |
HOUR_SECOND | ”HOURS:MINUTES:SECONDS” |
MICROSECOND | MICROSECONDS |
MINUTE | MINUTES |
MINUTE_MICROSECOND | ”MINUTES:SECONDS.MICROSECONDS” |
MINUTE_SECOND | ”MINUTES:SECONDS” |
MONTH | MONTHS |
QUARTER | QUARTERS |
SECOND | SECONDS |
SECOND_MICROSECOND | ”SECONDS.MICROSECONDS” |
WEEK | WEEKS |
YEAR | YEARS |
YEAR_MONTH | ”YEAR_MONTHS” |
Example
The following query adds 10 days to the date “2023-04-14” −
SELECT ''2023-04-14'' + INTERVAL 10 DAY;
Output
The output for the query above is produced as given below −
”2023-04-14” + INTERVAL 10 DAY |
---|
2023-04-24 |
Example
The following query subtracts 5 days from the date “2023-04-14” −
SELECT ''2023-04-14'' - INTERVAL 5 DAY;
Output
The output for the query above is produced as given below −
”2023-04-14” – INTERVAL 5 DAY |
---|
2023-04-09 |
Example
Here, we are adding two hours to the datetime value “2023-04-14 09:45:30.000” −
SELECT ''2023-04-14 09:45:30.000'' + INTERVAL 2 HOUR;
Output
Following is the output −
”2023-04-14 09:45:30.000” + INTERVAL 2 HOUR |
---|
2023-04-14 11:45:30 |
Example
The following query is subtracting sixty minutes from the datetime value “2023-04-14 09:45:30.000” −
SELECT ''2023-04-14 09:45:30.000'' - INTERVAL 60 MINUTE;
Output
Following is the output −
”2023-04-14 09:45:30.000” – INTERVAL 60 MINUTE |
---|
2023-04-14 08:45:30 |
Example
Here, we are adding and deleting one from the date ”2023-04-14” −
SELECT DATE_ADD(''2023-04-14'', INTERVAL 1 MONTH) ADD_ONE_MONTH, DATE_SUB(''2023-04-14'',INTERVAL 1 MONTH) SUB_ONE_MONTH;
Output
On executing the given query, the output is displayed as follows −
ADD_ONE_MONTH | SUB_ONE_MONTH |
---|---|
2023-05-14 | 2023-03-14 |
Example
In the following query, we are using the TIMESTAMPADD() function to add two hours to the timestamp value −
SELECT TIMESTAMPADD (HOUR, 2, ''2020-01-01 03:30:43.000'') 2_HOURS_LATER;
Output
Let us compile and run the query, to produce the following result −
2_HOURS_LATER |
---|
2020-01-01 05:30:43 |
Example
Now, let us create a table with a name OTT using the following query −
CREATE TABLE OTT ( ID INT NOT NULL, SUBSCRIBER_NAME VARCHAR (200) NOT NULL, MEMBERSHIP VARCHAR (200), EXPIRED_DATE DATE NOT NULL );
Using the following query, we are inserting some records into the above-created table using the INSERT INTO statement as shown below −
INSERT INTO OTT VALUES (1, ''Dhruv'', ''Silver'', ''2023-04-30''), (2, ''Arjun'',''Platinum'', ''2023-04-01''), (3, ''Dev'',''Silver'', ''2023-04-23''), (4, ''Riya'',''Gold'', ''2023-04-05''), (5, ''Aarohi'',''Platinum'', ''2023-04-02''), (6, ''Lisa'',''Platinum'', ''2023-04-25''), (7, ''Roy'',''Gold'', ''2023-04-26'');
The table is created as −
ID | SUBSCRIBER_NAME | MEMBERSHIP | EXPIRED_DATE |
---|---|---|---|
1 | Dhruv | Silver | 2023-04-30 |
2 | Arjun | Platinum | 2023-04-01 |
3 | Dev | Silver | 2023-04-23 |
4 | Riya | Gold | 2023-04-05 |
5 | Aarohi | Platinum | 2023-04-02 |
6 | Lisa | Platinum | 2023-04-25 |
7 | Roy | Gold | 2023-04-26 |
Now, we are selecting data from the OTT table for the subscribers whose membership is about to expire within the next 7 days from the specific date of ”2023-04-01”.
SELECT ID, SUBSCRIBER_NAME, MEMBERSHIP, EXPIRED_DATE, DATEDIFF(expired_date, ''2023-04-01'') EXPIRING_IN FROM OTT WHERE ''2023-04-01'' BETWEEN DATE_SUB(EXPIRED_DATE, INTERVAL 7 DAY) AND EXPIRED_DATE;
On executing the given query, the output is displayed as follows −
ID | SUBSCRIBER_NAME | MEMBERSHIP | EXPIRED_DATE | EXPIRED_IN |
---|---|---|---|---|
1 | Arjun | Platinum | 2023-04-01 | 0 |
2 | Riya | Gold | 2023-04-05 | 4 |
3 | Aarohi | Platinum | 2023-04-02 | 1 |
Interval Operator Using Client Program
In addition to executing the Interval Operator in MySQL table using an SQL query, we can also apply the INTERVAL operator on a table using a client program.
Syntax
Following are the syntaxes of the Interval Operator in MySQL table in various programming languages −
To execute the Interval operator in MySQL table through a PHP program, we need to execute INTERVAL statement using the query() function of mysqli connector.
$sql = "INTERVAL expr unit"; $mysqli->query($sql);
To execute the Interval operator in MySQL table through a JavaScript program, we need to execute INTERVAL statement using the query() function of mysql2 connector.
sql = "INTERVAL expr unit"; con.query(sql);
To execute the Interval operator in MySQL table through a Java program, we need to execute INTERVAL statement using the executeQuery() function of JDBC type 4 driver.
String sql = "INTERVAL expr unit"; statement.executeQuery(sql);
To execute the Interval operator in MySQL table through a Python program, we need to execute INTERVAL statement using the execute() function provided by MySQL Connector/Python.
interval_query = "INTERVAL expr unit" cursorObj.execute(interval_query);
Example
Following are the implementations of this operation in various programming languages −
$dbhost = ''localhost $dbuser = ''root $dbpass = ''password $dbname = ''TUTORIALS $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli->connect_errno ) { printf("Connect failed: %s
", $mysqli->connect_error); exit(); } //printf(''Connected successfully.
''); $sql = "SELECT ''2023-04-14'' + INTERVAL 10 DAY AS DATE"; $result = $mysqli->query($sql); if ($result->num_rows > 0) { printf("Date ''2023-04-14'' after 10 days: n"); while($row = $result->fetch_assoc()) { printf("DATE: %s", $row["DATE"],); printf("n"); } } else { printf(''Error.
''); } mysqli_free_result($result); $mysqli->close();
Output
The output obtained is as follows −
Date ''2023-04-14'' after 10 days: DATE: 2023-04-24
var mysql = require(''mysql2''); var con = mysql.createConnection({ host: "localhost", user: "root", password: "Nr5a0204@123" }); //Connecting to MySQL con.connect(function (err) { if (err) throw err; console.log("Connected!"); console.log("--------------------------"); //Creating a Database sql = "create database TUTORIALS" con.query(sql); //Select database sql = "USE TUTORIALS" con.query(sql); //Creating OTT table sql = "CREATE TABLE OTT (ID INT NOT NULL,SUBSCRIBER_NAME VARCHAR (200) NOT NULL,MEMBERSHIP VARCHAR (200),EXPIRED_DATE DATE NOT NULL);" con.query(sql); //Inserting Records sql = "INSERT INTO OTT(ID, SUBSCRIBER_NAME, MEMBERSHIP, EXPIRED_DATE) VALUES(1, ''Dhruv'', ''Silver'', ''2023-04-30''),(2, ''Arjun'',''Platinum'', ''2023-04-01''),(3, ''Dev'',''Silver'', ''2023-04-23''),(4, ''Riya'',''Gold'', ''2023-04-05''),(5, ''Aarohi'',''Platinum'', ''2023-04-02''),(6, ''Lisa'',''Platinum'', ''2023-04-25''),(7, ''Roy'',''Gold'', ''2023-04-26'');" con.query(sql); //Using INTERSECT Operator sql = "SELECT ID, SUBSCRIBER_NAME, MEMBERSHIP, EXPIRED_DATE, DATEDIFF(expired_date, ''2023-04-01'') Expiring_in FROM OTT WHERE ''2023-04-01'' BETWEEN DATE_SUB(EXPIRED_DATE, INTERVAL 7 DAY) AND EXPIRED_DATE;" con.query(sql, function(err, result){ if (err) throw err console.log(result) }); });
Output
The output produced is as follows −
Connected! -------------------------- [ { ID: 2, SUBSCRIBER_NAME: ''Arjun'', MEMBERSHIP: ''Platinum'', EXPIRED_DATE: 2023-03-31T18:30:00.000Z, Expiring_in: 0 }, { ID: 4, SUBSCRIBER_NAME: ''Riya'', MEMBERSHIP: ''Gold'', EXPIRED_DATE: 2023-04-04T18:30:00.000Z, Expiring_in: 4 }, { ID: 5, SUBSCRIBER_NAME: ''Aarohi'', MEMBERSHIP: ''Platinum'', EXPIRED_DATE: 2023-04-01T18:30:00.000Z, Expiring_in: 1 } ]
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class IntervalClause { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/TUTORIALS"; String user = "root"; String password = "password"; ResultSet rs; try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); //System.out.println("Database connected successfully...!"); String sql = "SELECT ''2023-04-14'' + INTERVAL 10 DAY"; rs = st.executeQuery(sql); System.out.print("Date ''2023-04-14'' after 10 days: "); while(rs.next()){ String date = rs.getNString(1); System.out.println(date); System.out.println(); } }catch(Exception e) { e.printStackTrace(); } } }
Output
The output obtained is as shown below −
Date ''2023-04-14'' after 10 days: 2023-04-24
import mysql.connector #establishing the connection connection = mysql.connector.connect( host=''localhost'', user=''root'', password=''password'', database=''tut'' ) cursorObj = connection.cursor() interval_query = f""" SELECT ''2023-05-28'' + INTERVAL 10 DAY; """ cursorObj.execute(interval_query) # Fetching all the rows that meet the criteria filtered_rows = cursorObj.fetchall() for row in filtered_rows: print(row) cursorObj.close() connection.close()
Output
Following is the output of the above code −
(''2023-06-07'',)