#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
5 min read
Question 21 of 29easy

What are common SQL date functions?

Working with dates and times.

What You'll Learn

  • Current date/time
  • Date arithmetic
  • Formatting dates

Current Date/Time

query.sqlSQL
-- Current date and time
SELECT NOW();           -- 2024-01-15 10:30:00
SELECT CURRENT_DATE;    -- 2024-01-15
SELECT CURRENT_TIME;    -- 10:30:00
SELECT CURRENT_TIMESTAMP;

-- MySQL specific
SELECT CURDATE();       -- 2024-01-15
SELECT CURTIME();       -- 10:30:00

Extract Parts

query.sqlSQL
-- Extract components
SELECT YEAR('2024-01-15');    -- 2024
SELECT MONTH('2024-01-15');   -- 1
SELECT DAY('2024-01-15');     -- 15
SELECT HOUR('10:30:00');      -- 10
SELECT MINUTE('10:30:00');    -- 30

-- Day of week (1=Sunday to 7=Saturday)
SELECT DAYOFWEEK('2024-01-15');  -- 2 (Monday)
SELECT DAYNAME('2024-01-15');    -- Monday
SELECT MONTHNAME('2024-01-15');  -- January

Date Arithmetic

query.sqlSQL
-- Add/subtract intervals
SELECT DATE_ADD('2024-01-15', INTERVAL 1 DAY);    -- 2024-01-16
SELECT DATE_ADD('2024-01-15', INTERVAL 1 MONTH);  -- 2024-02-15
SELECT DATE_ADD('2024-01-15', INTERVAL 1 YEAR);   -- 2025-01-15

SELECT DATE_SUB('2024-01-15', INTERVAL 7 DAY);    -- 2024-01-08

-- Difference between dates
SELECT DATEDIFF('2024-01-15', '2024-01-01');     -- 14
SELECT TIMESTAMPDIFF(MONTH, '2024-01-01', '2024-06-15');  -- 5

Formatting

query.sqlSQL
-- MySQL DATE_FORMAT
SELECT DATE_FORMAT('2024-01-15', '%Y-%m-%d');     -- 2024-01-15
SELECT DATE_FORMAT('2024-01-15', '%d/%m/%Y');     -- 15/01/2024
SELECT DATE_FORMAT('2024-01-15', '%M %d, %Y');    -- January 15, 2024
SELECT DATE_FORMAT(NOW(), '%H:%i:%s');            -- 10:30:00

-- PostgreSQL
SELECT TO_CHAR(NOW(), 'YYYY-MM-DD HH24:MI:SS');

Common Queries

query.sqlSQL
-- Records from today
SELECT * FROM orders WHERE DATE(created_at) = CURDATE();

-- Last 7 days
SELECT * FROM orders WHERE created_at >= DATE_SUB(CURDATE(), INTERVAL 7 DAY);

-- This month
SELECT * FROM orders WHERE YEAR(created_at) = YEAR(CURDATE()) AND MONTH(created_at) = MONTH(CURDATE());