5 min read
•Question 21 of 29easyWhat 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:00Extract 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'); -- JanuaryDate 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'); -- 5Formatting
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());