Преобразование типа данных char в тип данных datetime привело к значению datetime вне диапазона
У меня есть запрос ниже, выдавая ошибку, что преобразование типа данных char в тип данных datetime привело к значению datetime вне диапазона.
INSERT INTO ACCount (DocumentNo, AccNo, DueDate, [Description], DC, Amount, Amount1, Amount2, DateCreated, DateModified, [Type]) VALUES (40, 6000012, '14 / 12/2012 12:00:00 AM ', N '', N'C ', 365.70, 551292.750000000, 365.700000000, '14 / 12/2012 12:00:00 AM', '14 / 12/2012 12:00:00 AM ', N'PI')
Невозможно узнать, в чем именно заключается ошибка.
Как я могу решить это?
Заранее спасибо.
2 ответа
"14/12/2012" - это 12-й день 14-го месяца на большинстве серверов. Вы должны будете использовать правильную спецификацию формата для представления дат или, что лучше, (но только в коде приложения): передавайте его только как параметр, используя естественное представление даты в вызывающем коде (тогда строки никогда не бывает представление, поэтому оно никогда не бывает двусмысленным).
Другой способ сделать его очень однозначным как для сервера, так и для читателя-человека - это что-то вроде:
'14 Dec 2012 12:00:00 AM'
Вы используете неоднозначный формат даты и времени, и значения по умолчанию для ваших региональных настроек означают, что он не принимает его. Пытаться:
INSERT INTO ACCount (DocumentNo, AccNo, DueDate, [Description], DC, Amount,
Amount1, Amount2, DateCreated, DateModified, [Type])
VALUES (40, 6000012, '2012-12-14T12:00:00 AM', N'', N'C', 365.70, 551292.750000000,
365.700000000, '2012-12-14T12:00:00 AM', '2012-12-14T12:00:00 AM', N'PI')
Конечно, учитывая, что все компоненты времени полночь, вы можете просто использовать 20121214
(это однозначный формат только для даты)