Dates in SQL

Hello,
I'm passionate about transforming raw data into actionable insights, driven by a lifelong fascination with numbers. As a data analyst, I enjoy uncovering meaningful patterns and collaborating with like-minded individuals.
I'm also a strong advocate for mental health and use data to contribute to this important cause. My background in the medical field enhances my analytical approach, bridging the gap between healthcare and data analysis.
SQL date format is YYYY-MM-DD HH:MM: SS
Dates can be in different formats because:
Data manipulation in Excel MM/DD/YYYY
Data was manually entered
Data uses text to record months
Functions
SELECT DATE_TRUNC('day', date), SUM(total)
FROM supermarket_sales
GROUP BY DATE_TRUNC('day', date)
ORDER BY DATE_TRUNC('day', date)
DATE_TRUNC allows to truncate to a particular point. it is available in PostgreSQL, IBM Db2, and Google BigQuery but not in most other flavours.

DATE_PART month, dow(day of week)
EXTRACT Can be used to deconstruct a date. Extract year, month, day, hour or so.
The below SQL functions return the current date, time, and timestamp, respectively, based on the system clock.
SELECT CURRENT_DATE AS date,
CURRENT_TIME AS time,
CURRENT_TIMESTAMP AS timestamp,
LOCALTIME AS localtime,
LOCALTIMESTAMP AS localtimestamp,
NOW() AS now
DateAdd
is used to add or subtract a specified interval (such as days, months, or years) to a date or timestamp.
-- Adding 7 days to a date
SELECT DATEADD(day, 7, your_date_column) AS new_date FROM your_table;
-- Subtracting 1 month from a timestamp
SELECT DATEADD(month, -1, your_timestamp_column) AS new_timestamp FROM your_table;
DatedIff
Calculates the difference between two dates or timestamps in terms of a specified interval (e.g., days, months, or years)
-- Calculating the number of days between two dates
SELECT DATEDIFF(day, start_date, end_date) AS day_difference FROM your_table;
-- Calculating the number of months between two timestamps
SELECT DATEDIFF(month, timestamp1, timestamp2) AS month_difference FROM your_table;
Date Format
is used to format dates or timestamps into a specific string format.
-- Formatting a date as 'YYYY-MM-DD'
SELECT DATE_FORMAT(your_date_column, '%Y-%m-%d') AS formatted_date FROM your_table;
-- Formatting a timestamp as 'MM/DD/YYYY HH:MI AM'
SELECT DATE_FORMAT(your_timestamp_column, '%m/%d/%Y %h:%i %p') AS formatted_timestamp FROM your_table;
In Postgresql and Oracle, one can use to_char to format dates.
Different date formats:
%YYYY: Four-digit year (e.g., 2023).%YY: Last two digits of the year (e.g., 23).%MM: Month (01-12).%DD: Day of the month (01-31).%HH: Hour (00-23).%MI: Minute (00-59).%SS: Second (00-59).%AMor%PM: AM or PM for 12-hour time format.%Dy: Abbreviated day of the week (e.g., Mon).%Day: Full day of the week (e.g., Monday).%Mon: Abbreviated month (e.g., Jan).%Month: Full month (e.g., January).
SELECT TO_CHAR(your_date_column, 'YYYY-MM-DD') AS formatted_date FROM your_table;
SQL server uses CONVERT
101: USA date format (e.g., 'mm/dd/yyyy').120: ODBC canonical (e.g., 'yyyy-mm-dd hh:mi:ss').
SELECT CONVERT(VARCHAR, your_date_column, 101) AS formatted_date FROM your_table;
Further reading

