SQL Date Functions

SQL DATE_FORMAT: Format Dates as Strings (All Databases)

Format dates and timestamps as readable strings in SQL. Covers DATE_FORMAT (MySQL), TO_CHAR (PostgreSQL/Oracle), FORMAT (SQL Server).

Mar 12, 20265 min read

Overview

Every database formats dates differently. This guide shows how to convert dates to any string format you need.

MySQL

-- DATE_FORMAT(date, format):
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');          -- '2026-03-12'
SELECT DATE_FORMAT(NOW(), '%M %d, %Y');         -- 'March 12, 2026'
SELECT DATE_FORMAT(NOW(), '%d/%m/%Y');           -- '12/03/2026'
SELECT DATE_FORMAT(NOW(), '%H:%i:%s');           -- '14:30:00'
SELECT DATE_FORMAT(NOW(), '%W, %M %d, %Y');     -- 'Thursday, March 12, 2026'

-- Format codes: %Y=year, %m=month, %d=day
-- %H=hour24, %h=hour12, %i=minute, %s=second
-- %M=month name, %W=weekday name, %b=abbreviated month

PostgreSQL

-- TO_CHAR(date, format):
SELECT TO_CHAR(NOW(), 'YYYY-MM-DD');              -- '2026-03-12'
SELECT TO_CHAR(NOW(), 'Month DD, YYYY');          -- 'March    12, 2026'
SELECT TO_CHAR(NOW(), 'FMMonth DD, YYYY');        -- 'March 12, 2026'
SELECT TO_CHAR(NOW(), 'DD/MM/YYYY');              -- '12/03/2026'
SELECT TO_CHAR(NOW(), 'HH24:MI:SS');              -- '14:30:00'
SELECT TO_CHAR(NOW(), 'Day, FMMonth DD, YYYY');   -- 'Thursday, March 12, 2026'

-- FM prefix removes padding spaces

SQL Server

-- FORMAT (SQL Server 2012+):
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd');            -- '2026-03-12'
SELECT FORMAT(GETDATE(), 'MMMM dd, yyyy');         -- 'March 12, 2026'
SELECT FORMAT(GETDATE(), 'dd/MM/yyyy');             -- '12/03/2026'
SELECT FORMAT(GETDATE(), 'HH:mm:ss');               -- '14:30:00'

-- CONVERT with style codes (faster):
SELECT CONVERT(VARCHAR, GETDATE(), 23);   -- '2026-03-12' (ISO)
SELECT CONVERT(VARCHAR, GETDATE(), 101);  -- '03/12/2026' (US)
SELECT CONVERT(VARCHAR, GETDATE(), 103);  -- '12/03/2026' (UK)

Oracle

-- TO_CHAR(date, format):
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;          -- '2026-03-12'
SELECT TO_CHAR(SYSDATE, 'Month DD, YYYY') FROM DUAL;       -- 'March 12, 2026'
SELECT TO_CHAR(SYSDATE, 'DD/MM/YYYY') FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'HH24:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'Day, Month DD, YYYY') FROM DUAL;

Skip the Syntax Lookup

Instead of memorizing DATE_FORMAT / FORMAT / TO_CHAR syntax for each database, describe what you need in plain English and let AI2SQL generate the correct query.

Try AI2SQL Free

No credit card required

Frequently Asked Questions

How do I format a date in SQL?

MySQL: DATE_FORMAT(date, format). PostgreSQL/Oracle: TO_CHAR(date, format). SQL Server: FORMAT(date, format) or CONVERT with style codes.

What are the date format codes?

They differ by database. MySQL uses % prefixes (%Y, %m, %d). PostgreSQL/Oracle use YYYY, MM, DD. SQL Server FORMAT uses .NET format strings (yyyy, MM, dd).

Can AI2SQL format dates for me?

Yes. Say 'show order dates in DD/MM/YYYY format' and AI2SQL generates the correct date formatting for your database.

Generate SQL from Plain English

Stop looking up syntax. Describe what you need and AI2SQL writes the query.

Try AI2SQL Free

No credit card required