Вы вызываете функцию 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
, вам нужно оставить его как есть и выполнить форматирование на уровне представления.