SQL Server ODBC канонический формат даты в ДД / ММ / ГГГГ? - PullRequest
1 голос
/ 01 ноября 2011

Допустим, у меня есть дата и время из моей базы данных, например: 2011-10-24 00:00:00.000. Я хотел бы преобразовать это в 24/10/2011, но я не могу найти собственный способ SQL Server, чтобы сделать это, и я бы предпочел не делать этого в коде после запуска моего запроса.

Я пытался сделать что-то следующим образом ( согласно инструкции )

select CONVERT(datetime, '2011-10-24 00:00:00.000', 103);

Но это не сработало, мой результат:

Сообщение 242, Уровень 16, Состояние 3, Строка 1
Преобразование типа данных char в тип данных datetime привело к значению datetime вне диапазона.

Я подозреваю, что это может быть связано с десятичной точностью или временной составляющей, но я не уверен, как это сделать, не приводя к какой-то ерунде string-hacking-regex-replace (и я бы предпочел не делайте этого, я мог бы также выполнить преобразование после запроса, если я это сделаю).

1 Ответ

3 голосов
/ 01 ноября 2011

Если я правильно прочитал руководство, вам следует использовать стиль 120 "ODBC canonical" - нет ??

Попытка:

select CONVERT(datetime, '2011-10-24 00:00:00.000', 120);

Работает на моей машине :-) Это дает вам SQL Server DATETIME для работы.

Если вы хотите преобразовать это далее в 24/10/2011, используйте второй CONVERT для преобразования в VARCHAR строку:

select CONVERT(VARCHAR(50), CONVERT(datetime, '2011-10-24 00:00:00.000', 120), 103)

Это дает мне:

24/10/2011
...