Skip to content

Latest commit

 

History

History
92 lines (71 loc) · 3.72 KB

File metadata and controls

92 lines (71 loc) · 3.72 KB

⏰ DateTime Functions - Mastering Time in ML Data

🌟 Overview

DateTime Functions in SQL empower you to manipulate and analyze dates and times, unlocking powerful time-series capabilities for AI/ML workflows. These functions handle tasks like extracting date parts, calculating time differences, aggregating by time periods, or scheduling ML jobs. In AI/ML, datetime functions are essential for analyzing prediction trends, tracking model performance over time, or managing temporal datasets.


📜 Syntax

-- Monthly Aggregation (PostgreSQL/MySQL)
SELECT DATE_TRUNC('month', prediction_date) AS month,
       AVG(score) AS avg_score
FROM predictions
GROUP BY month;
  • Extract Date Part (PostgreSQL):
    SELECT prediction_id,
           EXTRACT(YEAR FROM prediction_date) AS prediction_year
    FROM predictions
    WHERE EXTRACT(MONTH FROM prediction_date) = 4;
  • Time Difference (MySQL):
    SELECT prediction_id,
           DATEDIFF(CURDATE(), prediction_date) AS days_since_prediction
    FROM predictions
    WHERE prediction_date >= '2025-01-01';
  • Add Interval (PostgreSQL):
    SELECT prediction_id,
           prediction_date + INTERVAL '30 days' AS review_date
    FROM predictions
    WHERE model_id = 101;
  • Current Timestamp (MySQL/PostgreSQL):
    INSERT INTO predictions (prediction_id, score, prediction_date, model_name)
    VALUES (1001, 0.85, NOW(), 'BERT_v2');

💡 Use Cases in AI/ML

  • Time-Series Analysis: Aggregate ML predictions by week (e.g., DATE_TRUNC('week', prediction_date)).
  • Model Monitoring: Calculate days since predictions (e.g., DATEDIFF(NOW(), prediction_date)).
  • Data Filtering: Extract records from a specific quarter (e.g., EXTRACT(QUARTER FROM prediction_date) = 1).
  • Scheduling: Set future retraining dates (e.g., CURRENT_DATE + INTERVAL '1 month').

🔑 Key Features

  • Date Extraction: Pull years, months, or hours (e.g., EXTRACT, YEAR()).
  • Time Arithmetic: Add/subtract intervals (e.g., INTERVAL, DATEADD).
  • Aggregation: Group by time periods (e.g., DATE_TRUNC, DATE_FORMAT).
  • Current Time: Access system timestamps (e.g., NOW(), CURRENT_TIMESTAMP).

✅ Best Practices

  • Use Indexes: Create indexes on datetime columns (e.g., CREATE INDEX ON predictions(prediction_date)).
  • Standardize Formats: Store dates in ISO format (YYYY-MM-DD) for consistency.
  • Test Ranges: Verify date filters with SELECT to avoid missing data.
  • Handle Timezones: Use AT TIME ZONE (PostgreSQL) or CONVERT_TZ (MySQL) for global ML apps.

⚠️ Common Pitfalls

  • Format Mismatch: Incorrect date formats (e.g., MM-DD vs. DD-MM) cause errors—use TO_DATE for parsing.
  • Timezone Errors: Ignoring timezones leads to off-by-hour results—always specify zones.
  • Performance Hits: Unindexed datetime queries on large tables slow down—index key columns.
  • Edge Cases: Forgetting leap years or month-end dates skews calculations—test boundary dates.

📝 Additional Notes

  • Database Variations:
    • PostgreSQL: Rich datetime support (DATE_TRUNC, INTERVAL, GENERATE_SERIES).
    • MySQL: Uses DATE_FORMAT, DATEDIFF, but lacks EXTRACT (use YEAR(), MONTH()).
    • SQL Server: Offers DATEPART, DATEADD, but no native DATE_TRUNC.
  • Optimization: Use range partitioning on datetime columns for big datasets (e.g., PARTITION BY RANGE(prediction_date)).
  • Interview Tip: Practice monthly aggregations and date filtering—common in time-series ML questions.
  • Tools: Use pg_cron (PostgreSQL) for scheduled datetime-based ML tasks.