Date & Time Functions
Work with dates and timestamps
Date functions vary significantly between databases. Here are the most common patterns.
SQLite Date Functions
-- Current date/time
SELECT date('now'); -- 2024-01-15
SELECT datetime('now'); -- 2024-01-15 14:30:00
SELECT time('now'); -- 14:30:00
-- Date arithmetic
SELECT date('now', '+7 days');
SELECT date('now', '-1 month');
SELECT date('now', 'start of month');
SELECT date('now', 'weekday 0'); -- Next Sunday
-- Extract parts
SELECT strftime('%Y', created_at) AS year;
SELECT strftime('%m', created_at) AS month;
SELECT strftime('%d', created_at) AS day;
SELECT strftime('%W', created_at) AS week_num;PostgreSQL Date Functions
-- Current date/time
SELECT CURRENT_DATE;
SELECT CURRENT_TIMESTAMP;
SELECT NOW();
-- Date arithmetic
SELECT NOW() + INTERVAL '7 days';
SELECT NOW() - INTERVAL '1 month';
SELECT DATE_TRUNC('month', NOW());
-- Extract parts
SELECT EXTRACT(YEAR FROM created_at);
SELECT EXTRACT(MONTH FROM created_at);
SELECT EXTRACT(DOW FROM created_at); -- Day of weekCommon Patterns
-- Orders from last 7 days (SQLite)
SELECT * FROM orders
WHERE created_at >= date('now', '-7 days');
-- Orders from last 7 days (PostgreSQL)
SELECT * FROM orders
WHERE created_at >= NOW() - INTERVAL '7 days';
-- Group by month (SQLite)
SELECT strftime('%Y-%m', created_at) AS month, COUNT(*)
FROM orders
GROUP BY strftime('%Y-%m', created_at);
-- Group by month (PostgreSQL)
SELECT DATE_TRUNC('month', created_at) AS month, COUNT(*)
FROM orders
GROUP BY DATE_TRUNC('month', created_at);