Change Date Format(DD/MM/YYYY) in SQL SELECT Statement
Mastering Date Format Changes to DD/MM/YYYY in SQL SELECT Statements

Learn how to effectively format dates to the DD/MM/YYYY standard within SQL SELECT statements across various SQL dialects, ensuring consistent and readable date outputs for your applications and reports.
Displaying dates in a specific format is a common requirement in database applications and reporting. While SQL stores dates in an internal format, presenting them to users often necessitates conversion to a more human-readable and culturally appropriate format, such as DD/MM/YYYY. This article will guide you through the process of changing date formats in SQL SELECT
statements, focusing on common SQL Server functions and providing insights into other SQL dialects.
Understanding Date Formatting in SQL Server
SQL Server provides robust functions for converting data types, including dates. The primary function for formatting dates is CONVERT()
or FORMAT()
. While CONVERT()
is widely supported across different SQL Server versions, FORMAT()
offers more flexibility and is available from SQL Server 2012 onwards. Choosing the right function depends on your SQL Server version and specific formatting needs.
SELECT GETDATE() AS CurrentDateTime;
SELECT CONVERT(DATE, GETDATE()) AS CurrentDateOnly;
Retrieving current date and time, and converting to date-only format.
flowchart TD A[Start: SQL SELECT Statement] --> B{Date Column/Expression} B --> C{Choose Formatting Function} C -->|SQL Server 2012+| D[FORMAT() Function] C -->|All SQL Server Versions| E[CONVERT() Function] D --> F["Specify Format String (e.g., 'dd/MM/yyyy')"] E --> G["Specify Style Code (e.g., 103 for DD/MM/YYYY)"] F --> H[Output: DD/MM/YYYY String] G --> H H --> I[End: Formatted Date Result]
Decision flow for date formatting in SQL SELECT statements.
Using CONVERT() for DD/MM/YYYY Format
The CONVERT()
function is a versatile tool for type conversion in SQL Server. To format a date to DD/MM/YYYY, you'll use a specific style code. Style code 103
is specifically designed for this format. The syntax is CONVERT(data_type, expression, style)
. When converting a DATE
or DATETIME
type to VARCHAR
, you can apply this style.
SELECT
OrderDate,
CONVERT(VARCHAR(10), OrderDate, 103) AS FormattedOrderDate
FROM
Orders;
-- Example with a specific date
SELECT CONVERT(VARCHAR(10), '2023-10-26 14:30:00', 103) AS SpecificFormattedDate;
Using CONVERT() with style 103 to format dates to DD/MM/YYYY.
VARCHAR
when using CONVERT()
to avoid truncation or unnecessary padding, especially when dealing with dates. For DD/MM/YYYY, VARCHAR(10)
is sufficient.Leveraging FORMAT() for Enhanced Date Formatting (SQL Server 2012+)
For SQL Server 2012 and later, the FORMAT()
function offers a more intuitive and flexible way to format dates, similar to .NET string formatting. It allows you to specify custom format strings directly, making it easier to achieve precise output. The syntax is FORMAT(value, format_string, culture)
. The culture
parameter is optional but can be useful for locale-specific formatting.
SELECT
OrderDate,
FORMAT(OrderDate, 'dd/MM/yyyy') AS FormattedOrderDate
FROM
Orders;
-- Example with a specific date and culture
SELECT FORMAT('2023-10-26 14:30:00', 'dd/MM/yyyy', 'en-GB') AS SpecificFormattedDateWithCulture;
Using FORMAT() with a custom format string 'dd/MM/yyyy'.
FORMAT()
is more flexible, it can sometimes be less performant than CONVERT()
for very large datasets, as it relies on the .NET Framework Common Language Runtime (CLR). For critical performance scenarios, benchmark both options.Date Formatting in Other SQL Dialects
While the examples above focus on SQL Server, other database systems have their own functions for date formatting. Understanding these variations is crucial for cross-platform development.
MySQL
SELECT DATE_FORMAT(OrderDate, '%d/%m/%Y') AS FormattedOrderDate FROM Orders;
PostgreSQL
SELECT TO_CHAR(OrderDate, 'DD/MM/YYYY') AS FormattedOrderDate FROM Orders;
Oracle
SELECT TO_CHAR(OrderDate, 'DD/MM/YYYY') AS FormattedOrderDate FROM Orders;
As you can see, the function names and format specifiers vary significantly between database systems. Always refer to the specific database's documentation for the most accurate syntax.