/

/

SQL DATEADD: Complete Guide with Examples & Functions | Free

TOOLS

SQL DATEADD: Complete Guide with Examples & Functions | Free

SQL DATEADD: Complete Guide with Examples & Functions | Free

SQL DATEADD: Complete Guide with Examples & Functions | Free

Dec 25, 2024

SQL Dateadd

Understanding DATEADD in Different Databases

Each database system has its own way of adding dates. Here's how to use them effectively:

SQL Server (DATEADD)

-- Add 30 days to current date
SELECT DATEADD(day, 30, GETDATE()) as future_date;

-- Add 3 months to order date
SELECT 
    order_id,
    order_date,
    DATEADD(month, 3, order_date) as delivery_date
FROM

MySQL (DATE_ADD)

-- Add 1 week to current date
SELECT DATE_ADD(CURRENT_DATE, INTERVAL 1 WEEK) as next_week;

-- Add 2 years to hire date
SELECT 
    employee_name,
    hire_date,
    DATE_ADD(hire_date, INTERVAL 2 YEAR) as anniversary
FROM

PostgreSQL (+ interval)

-- Add 6 hours to timestamp
SELECT current_timestamp + INTERVAL '6 hours' as future_time;

-- Add 45 minutes to event time
SELECT 
    event_name,
    start_time,
    start_time + INTERVAL '45 minutes' as end_time
FROM

For more examples and SQL tools, visit our AI SQL Tools page.

Common Use Cases

1. Subscription Management

-- Calculate subscription end dates
SELECT 
    customer_id,
    subscription_start,
    CASE subscription_type
        WHEN 'Monthly' THEN DATE_ADD(subscription_start, INTERVAL 1 MONTH)
        WHEN 'Quarterly' THEN DATE_ADD(subscription_start, INTERVAL 3 MONTH)
        WHEN 'Annual' THEN DATE_ADD(subscription_start, INTERVAL 1 YEAR)
    END as subscription_end,
    subscription_type
FROM subscriptions
WHERE is_active = 1

2. Order Processing

-- Calculate expected delivery dates
SELECT 
    o.order_id,
    o.order_date,
    DATE_ADD(o.order_date, INTERVAL st.processing_days DAY) as estimated_delivery
FROM orders o
JOIN shipping_types st ON o.shipping_type_id = st.id
WHERE o.status = 'Processing'

3. Invoice Due Dates

-- Set payment terms
SELECT 
    invoice_number,
    issue_date,
    DATE_ADD(issue_date, INTERVAL 30 DAY) as due_date,
    amount,
    CASE 
        WHEN CURRENT_DATE > DATE_ADD(issue_date, INTERVAL 30 DAY)
        THEN 'Overdue'
        ELSE 'Current'
    END as status
FROM

Advanced Date Calculations

1. Multiple Intervals

-- Complex date calculations
SELECT 
    event_date,
    DATE_ADD(
        DATE_ADD(event_date, INTERVAL 2 WEEK),
        INTERVAL 3 DAY
    ) as followup_date
FROM

2. Business Days

-- Add business days (excluding weekends)
CREATE FUNCTION AddBusinessDays(start_date DATE, num_days INT)
RETURNS DATE
BEGIN
    DECLARE current_date DATE;
    SET current_date = start_date;
    
    WHILE num_days > 0 DO
        SET current_date = DATE_ADD(current_date, INTERVAL 1 DAY);
        IF DAYOFWEEK(current_date) NOT IN (1, 7) THEN
            SET num_days = num_days - 1;
        END IF;
    END WHILE;
    
    RETURN current_date;
END

3. Date Range Analysis

-- Create date ranges for reporting
WITH RECURSIVE date_ranges AS (
    SELECT 
        start_date,
        DATE_ADD(start_date, INTERVAL 6 DAY) as end_date
    FROM (SELECT MIN(date) as start_date FROM sales) d
    UNION ALL
    SELECT 
        DATE_ADD(start_date, INTERVAL 7 DAY),
        DATE_ADD(DATE_ADD(start_date, INTERVAL 7 DAY), INTERVAL 6 DAY)
    FROM date_ranges
    WHERE start_date < (SELECT MAX(date) FROM sales)
)
SELECT 
    start_date,
    end_date,
    COUNT(s.sale_id) as sales_count,
    SUM(s.amount) as total_sales
FROM date_ranges dr
LEFT JOIN sales s ON s.date BETWEEN dr.start_date AND dr.end_date
GROUP BY start_date, end_date
ORDER BY

Best Practices

  1. Time Zone Handling

-- Consider time zones in calculations
SELECT 
    event_utc,
    CONVERT_TZ(
        DATE_ADD(event_utc, INTERVAL 24 HOUR),
        'UTC',
        user_timezone
    ) as followup_local_time
FROM

  1. Data Validation

-- Validate date inputs
SELECT 
    order_date,
    CASE 
        WHEN order_date > CURRENT_DATE
        THEN NULL
        ELSE DATE_ADD(order_date, INTERVAL shipping_days DAY)
    END as valid_delivery_date
FROM

For more optimization tips, check out our SQL Query Optimization Guide.

FAQs

Q: How do I handle leap years? A: Database systems automatically handle leap year calculations in date functions.

Q: Can I add fractional intervals? A: Yes, you can add fractional intervals using HOUR, MINUTE, or SECOND units.

Explore more AI-powered SQL tools at AI2SQL.

Share this

More Articles

More Articles

More Articles