Форматирование Datetime2 в SQL Server - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь отформатировать datetime2 в yyyy-mm-dd hh:mm:ss формат.

Я пробовал следующие варианты:

Это выдает ошибку:

SELECT CONVERT(datetime2, 120); 

Это отлично работает, но мне нужен вывод типа datetime2

SELECT CONVERT(VARCHAR(19), GETDATE(), 120);

Как мне этого добиться?

1 Ответ

3 голосов
/ 10 июня 2019

Вы вызываете функцию CONVERT() без указания типа данных для преобразования, поэтому в вашем случае SELECT CONVERT(datetime2, 120); SQL Server попытается преобразовать значение 120 в datetime2, и именно поэтому вы получаете эту ошибку (который вы не предоставляете)

Явное преобразование из типа данных int в datetime2 не допускается.

Чтобы использовать CONVERT() со стилями даты и времени, вам необходимо передать

CONVERT(<datatype to convert to>, <Value to be converted>, <Style>).

SYSUTCDATETIME возвращает datetime2, который можно преобразовать в

SELECT CONVERT(VARCHAR(20), SYSUTCDATETIME(), 120)
--Change SYSUTCDATETIME() with your column/variable

За то, что вы говорите

но мне нужен вывод типа datetime2

A DATETIME не имеет формата, это двоичное значение, поэтому вам необходимо преобразовать его в форматированную строку. Так как вам нужно вернуть DATETIME2, вам нужно оставить его как есть и выполнить форматирование на уровне представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...