#sql-server #date #date-conversion
Вопрос:
В SQL server у меня есть строка даты, которая выглядит примерно как 09/08/2021. Представляет собой дд/ММ/ГГГГ. Так что в данном случае это 09 августа 2021 года. Каждый метод, который я пытаюсь явно преобразовать в формат даты, автоматически преобразует это в 2021-09-08. Таким образом, SQL неверно преобразуется в 08 сентября 2021 года.
SELECT TRY_CAST(Convert(VARCHAR(15),'09/08/2021',103) as date);
SELECT TRY_CAST(Convert(VARCHAR(15),'09/08/2021',111) as date);
Оба неверно дают:
2021-09-08
Желаемый результат -:
2021-08-09
Я пробовал различные версии вышеперечисленного, но все время получаю неверное преобразование. Я тоже не очень хочу идти по пути изменения исходных данных.
Я поражен тем, что ранее по этому поводу не задавалось подобных вопросов.
Как это можно преобразовать явно с помощью функций в SQL Server?
Комментарии:
1.
CONVERT
принимает стиль при преобразовании в aDATE
, но вы преобразуетесь в aVARCHAR(15)
. Ты хочешьSELECT TRY_CONVERT(DATE, '09/08/2021', 103)
вместо этого.2. Почему вы вообще ожидаете такого формата?
date
это двоичное значение, оно не имеет формата . Формат предназначен для вашего уровня презентации, чтобы определить не SQL.
Ответ №1:
Согласно комментариям, ошибкой было преобразование. Приспособлен к
TRY_CONVERT(DATE, '09/08/2021', 103)
Это устраняет проблему.