sqlbeginner
SQL Date and Time Functions
Essential date/time operations for filtering, formatting, calculating intervals, and time zones.
sqlPress ⌘/Ctrl + Shift + C to copy
-- Current timestamps
SELECT
NOW() AS current_timestamp,
CURRENT_DATE AS today,
CURRENT_TIME AS time_now,
NOW() AT TIME ZONE 'UTC' AS utc_now;
-- Date arithmetic
SELECT
NOW() - INTERVAL '7 days' AS one_week_ago,
NOW() + INTERVAL '1 month' AS next_month,
CURRENT_DATE - 30 AS thirty_days_ago,
AGE(NOW(), '2024-01-01') AS time_since;
-- Extract parts
SELECT
EXTRACT(YEAR FROM NOW()) AS year,
EXTRACT(MONTH FROM NOW()) AS month,
EXTRACT(DOW FROM NOW()) AS day_of_week,
EXTRACT(EPOCH FROM NOW()) AS unix_timestamp;
-- Truncate (for grouping)
SELECT
DATE_TRUNC('month', created_at) AS month,
COUNT(*) AS orders
FROM orders
GROUP BY DATE_TRUNC('month', created_at)
ORDER BY month;
-- Format dates
SELECT TO_CHAR(NOW(), 'YYYY-MM-DD HH24:MI:SS') AS formatted;
SELECT TO_CHAR(NOW(), 'Mon DD, YYYY') AS pretty_date;
-- Filter by date range
SELECT * FROM events
WHERE created_at >= DATE_TRUNC('month', CURRENT_DATE)
AND created_at < DATE_TRUNC('month', CURRENT_DATE) + INTERVAL '1 month';
-- Generate date series for gap-filling
SELECT d::date AS date, COALESCE(o.total, 0) AS orders
FROM generate_series(
CURRENT_DATE - 30,
CURRENT_DATE,
'1 day'::interval
) d
LEFT JOIN (
SELECT DATE(created_at) AS day, COUNT(*) AS total
FROM orders GROUP BY DATE(created_at)
) o ON d::date = o.day
ORDER BY date;Use Cases
- Filtering records by relative date ranges
- Monthly and weekly aggregation reports
- Gap-filling missing dates in time series
Tags
Related Snippets
Similar patterns you can reuse in the same workflow.
sqlbeginner
SQL String Manipulation Functions
Common string operations for cleaning, formatting, searching, and transforming text data in SQL.
Best for: Data cleaning and normalization
#sql#strings
sqladvanced
Recursive CTE for Hierarchical Data
Query hierarchical data like org charts, categories, and file trees using recursive CTEs.
Best for: Querying organizational hierarchies
#sql#cte
sqlintermediate
SQL Pivot and Crosstab Queries
Transform row data into columnar reports using CASE expressions, FILTER, and crosstab patterns.
Best for: Creating monthly revenue reports
#sql#pivot
sqlintermediate
SQL Upsert and Merge Patterns
Insert or update records atomically using ON CONFLICT, MERGE, and database-specific upsert syntax.
Best for: Syncing data from external sources
#sql#upsert