SQL-Сервер — преобразование даты

#sql-server #tsql

#sql-сервер #tsql

Вопрос:

У меня есть поле даты, сохраненное в формате 16/08/2010 17:17

Я пытаюсь сохранить это как datetime, чтобы я мог преобразовать его.

Проблема в том, что при выполнении я получаю сообщение об ошибке «вне диапазона». Как я могу решить эту проблему?

Мои запросы:

 CAST(agreement_Date AS Datetime)
CONVERT(varchar,agreement_date,126)
  

Ошибка:

Преобразование типа данных varchar в тип данных datetime привело к значению, выходящему за пределы диапазона.

Ответ №1:

Вместо CAST использования:

CONVERT(datetime, agreement_Date, 103)

103 Указывает dd/mm/yy преобразование, которое, я думаю, является вашей проблемой. SQL Server сначала ищет месяц, и это приводит к исключению вне диапазона.

Комментарии:

1. Я неправильно понял концепцию преобразования. Отлично! Большое спасибо.

Ответ №2:

Попробуйте ПРЕОБРАЗОВАТЬ со стилем 103: http://msdn.microsoft.com/en-us/library/ms187928.aspx

 SELECT CONVERT(datetime,'16/08/2010 17:17',103)
  

-> 2010-08-16 17:17:00.000

@Edit: неверный аргумент стиля

Комментарии:

1. 1 правильный ответ, но я всегда стремлюсь понять свою проблему, а не просто быстро решить