#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 правильный ответ, но я всегда стремлюсь понять свою проблему, а не просто быстро решить