Проблема преобразования даты и времени на сервере SQL - PullRequest
0 голосов
/ 31 мая 2019

У меня есть этот запрос:

declare @a datetime = '20/05/2019 9:22:07'

Я хочу выводить как:

2019-05-20 9:22:07

Я пытался:

SELECT CONVERT(CHAR(10),CONVERT(DATETIME,LEFT(@a,10),103),101);

SELECT convert(varchar, convert(date, @a, 105), 101) 

Но это дает мне ошибку:

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

Как преобразовать данные этого типа?

Я хочу получить стандартное преобразование даты и времени, которое будет работать на всех языках

1 Ответ

2 голосов
/ 31 мая 2019

Ваша проблема с конверсией происходит здесь:

declare @a datetime = '20/05/2019 9:22:07';

Я думаю, что вы намерены это как строка:

declare @a varchar(255) = '20/05/2019 9:22:07';

Чтобы получить время только с одной цифрой для часа, вы можете использовать:

SELECT CONVERT(VARCHAR(10), CONVERT(DATETIME, LEFT(@a, 10), 103), 120) + ' ' + TRIM(RIGHT(@a, 8))

Чаще вы будете использовать:

SELECT CONVERT(VARCHAR(20), CONVERT(DATETIME, @a, 103), 120) 

Это производит:

2019-05-20 09:22:07
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...