номер
Если вы используете столбец datetime (в отличие от более новых типов, введенных в 2008 году), безопасный формат включает букву T между компонентами даты и времени, например, '2011-04-28T13:01:45'
.
Для неоднозначной даты (где день <= 12) SQL Server может перепутать день и месяц: </p>
set language british
select MONTH(CONVERT(datetime,'2011-04-05 13:01:45'))
----
5
set language british
select MONTH(CONVERT(datetime,'2011-04-05T13:01:45'))
----
4
В более общем смысле, однако, вы должны найти способ избежать обработки значений даты и времени как строк, например. если вы передаете это значение из какого-либо другого (не SQL) кода, то используйте все доступные средства в вашей библиотеке доступа к данным (например, ADO.Net), чтобы передать значение как значение даты и времени - пусть библиотека работает с любым необходимые переводы.