/

/

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

Dec 25, 2024

Dec 25, 2024

SQL Dateadd
SQL Dateadd
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