Как преобразовать строку «дд / мм / гггг» в дату и время в SQL Server? - PullRequest
41 голосов
/ 06 мая 2010

Я пробовал это

SELECT convert(datetime, '23/07/2009', 111)

но получил эту ошибку

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

Тем не менее

SELECT convert(datetime, '07/23/2009', 111)

нормально, хотя

Как починить 1-й?

Ответы [ 5 ]

81 голосов
/ 06 мая 2010

Последний аргумент CONVERT, похоже, определяет формат, используемый для разбора. Консультируйтесь с MSDN документами для CONVERT .

111 - вы используете Японию yy/mm/dd.

Полагаю, вы ищете 103, то есть dd/mm/yyyy.

Итак, вы должны попробовать:

 SELECT convert(datetime, '23/07/2009', 103)
9 голосов
/ 06 мая 2010

Попробуйте:

SELECT convert(datetime, '23/07/2009', 103)

это британский / французский стандарт.

0 голосов
/ 07 июня 2016
SELECT convert(datetime, '23/07/2009', 103)
0 голосов
/ 02 июля 2014

SQL Server по умолчанию использует формат даты mdy, поэтому работает следующее:

SELECT convert(datetime, '07/23/2009', 111)

и это не работает:

SELECT convert(datetime, '23/07/2009', 111)

Я сам изо всех сил пытался придумать один запрос, который может обрабатывать оба формата даты: mdy и dmy.

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

0 голосов
/ 26 февраля 2014
SELECT convert(varchar(10), '23/07/2009', 111)
...