В зависимости от типа данных столбца, который вы пытаетесь преобразовать, существуют разные способы решения этой проблемы.
Предполагая, что столбец уже является одним из типов дат (date
/ datetime
/ datetime2
), преобразование выполняется просто - все, что вам нужно, это выбрать правильный параметр style
.
Для британского / французского (dd/mm/yyyy
) вы используете 103:
SELECT CONVERT(char(10), dateOrdateTimeValue, 103)
Если исходный столбец является строковым столбцом (char
/ varchar
/ nchar
/ nvarchar
), а формат представления даты в строке - yyyymmdd
, вы можете безопасно привести его к дате, так как yyyymmdd
всегда будет правильно интерпретироваться SQL Server, а затем использовать convert
, как и раньше:
SELECT CONVERT(char(10), CAST(stringRepresentationOfDateAsYYYYMMDD As Date), 103)
Примечание: только форматы ISO8601 (ггггммдд | гггг-мм-дд) гарантированно правильно интерпретируются независимо от настроек культуры для типа данных даты (Bewrae: В типе данных DateTime
есть ошибка со вторым формат ).
Если исходным столбцом является int
, сначала вы приводите к char
, затем к date
и, наконец, используете convert
:
SELECT CONVERT(char(10), CAST(CAST intRepresentationOfDateAsYYYYMMDD as char(8)) As Date), 103)