Конвертация даты в формат DD/MMM/YYYY в SQL Server

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для того, чтобы преобразовать дату в требуемый формат, используйте следующую команду:

SQL
Скопировать код
SELECT REPLACE(CONVERT(VARCHAR, ваша_колонка, 106), ' ', '/') AS ОтформатированнаяДата;

Замените ваша_колонка на имя колонки, содержащей дату.

Этап I: Использование функции "CONVERT"

Преобразование можно начать с функции CONVERT, которая эффективно меняет форматы даты:

SQL
Скопировать код
SELECT CONVERT(VARCHAR, ваша_колонка_даты, 106) AS ОтформатированнаяДата;

Примечание: В стиле 106 задан формат даты "ДД мес ГГГГ".

Этап II: Замена пробелов на слеши

Если полученный результат выглядит так: 07 Апр 2023, исправим это с помощью функции REPLACE():

SQL
Скопировать код
SELECT REPLACE(CONVERT(VARCHAR, ваша_колонка_даты, 106), ' ', '/') AS ОтформатированнаяДата;

Теперь формат представлен корректно: ДД/МММ/ГГГГ.

Усовершенствование преобразования после SQL Server 2012

Уже начиная с версии SQL Server 2012 становится доступной функция FORMAT():

SQL
Скопировать код
SELECT FORMAT(ваша_колонка_даты, 'dd/MMM/yyyy', 'en-US') AS ОтформатированнаяДата;

Обратите внимание: FORMAT() может работать медленнее при обработке больших наборов данных.

Настройка языка и культуры: Важность деталей

Ваши функции CONVERT или FORMAT могут сработать некорректно из-за настроек языка сервера. Чтобы предотвратить это, установите необходимый язык:

SQL
Скопировать код
SET LANGUAGE British;
SELECT CONVERT(VARCHAR, GETDATE(), 106);

Так CONVERT будет представлять дату именно в том формате, который вам нужен.

Времена SQL Server 2005: Ностальгия

Если вы работаете с SQL Server 2005, где функция FORMAT не поддерживается, вы можете использовать CLR UDF:

SQL
Скопировать код
-- Пример CLR UDF (псевдокод):
SELECT dbo.FormatDate(ваша_колонка_даты) AS ОтформатированнаяДата;

CLR UDF приходит на помощь, как супергерой из мира SQL.

Выбор подходящего "наряда": Формат даты

Вне зависимости от того, используете ли вы FORMAT() или CONVERT(), применяйте подходящий шаблон для вашей версии SQL Server.

Визуализация

В роли режиссера своих данных, внесите изменения в их "костюм":

Исходный формат: 2023-04-12 (ГГГГ-ММ-ДД)
Преобразование: CONVERT_STYLE
Результат: 12/Апр/2023 (ДД/МММ/ГГГГ)

CONVERT выступает в роли стилиста:

SQL
Скопировать код
SELECT REPLACE(CONVERT(varchar, GETDATE(), 106), ' ', '/') as ОтформатированнаяДата;

И дата преобразовывается из привычной в особенную в мире SQL!

Учет времени

Если в вашей базе данных время также важно, используйте FORMAT() для полной даты-времени:

SQL
Скопировать код
SELECT FORMAT(ваша_колонка_датавремя, 'dd/MMM/yyyy hh:mm:ss tt', 'en-US') AS ОтформатированнаяДатаВремя;

Так формат даты становится полным, включая время.

Углубление в знания

Если вы желаете узнать больше о SQL и форматировании дат, обратитесь к разделу Полезные материалы.