rajin kp Ответов: 5

ошибка преобразования даты и времени в sqlserver( ошибка преобразования типа данных nvarchar в datetime. )


у меня есть строка datetime "01-10-2013 09:15" при передаче этого значения параметру datetime возникает ошибка
Error converting data type nvarchar to datetime.

плз помогите

faisal23

Пожалуйста, предоставьте более подробную информацию ..

5 Ответов

Рейтинг:
37

OriginalGriff

Во - первых, не передавайте его как строку-передайте его как DateTime через параметризованный запрос, и вы не получите проблем.

Проблема в том, что SQL ожидает даты в формате гггг-ММ-ДД, и неанглийские символы путают его.

Передача дат в виде строк не является хорошей идеей - преобразуйте их в значения DateTime как можно скорее, чтобы избавиться от любой информации о местной культуре, которую пользователь мог ввести.


rajin kp

Д датавремя= Датавремя.Parse(MeetingTime, CultureInfo.Языка и региона существует);
cmdobj.Параметры.AddWithValue ("@MeetingTime", d );
Теперь новая ошибка "строка не была распознана как допустимая Дата-Время. Есть неизвестное слово, начинающееся с индекса 17."

OriginalGriff

Да-арабские символы начинаются с индекса 17.
Вы не можете использовать инвариантную культуру, вы должны использовать культуру для машины, на которой была введена информация о дате, это единственный способ быть разумно уверенным, что пользовательский формат ввода соответствует тому, с чем вы пытаетесь его перевести.

rajin kp

спасибо.Когда я использую Convert.Проблема ToDateTime(stringdate) решена.

OriginalGriff

Пожалуйста!

fjdiewornncalwe

Мой 5.

Member 11012743

я запускаю хранимую процедуру из SQL SERVER, чем также и передаю дату в качестве входных данных, все еще получая ту же ошибку "Ошибка преобразования типа данных nvarchar в datetime."

OriginalGriff

Такая же проблема...так же решение! :смеяться:

Member 11012743

какое же решение?

OriginalGriff

Тот, который вы комментируете, который я разместил здесь два года назад!

Member 11012743

как я нахожу проблему, чем только я спросил.

OriginalGriff

Полученное сообщение об ошибке означает, что вы передаете строковое значение хранимой процедуре и преобразуете его в значение даты или времени, но SQL не может понять переданное вами строковое значение.
Единственное решение для этого - перейти туда, где вы вызываете SP в своем приложении, и исправить его там, где у вас есть информация о локали пользователя и т. д., путем преобразования, сообщения об ошибках и передачи только значения DateTime в ваш SP.

Точно такая же проблема, как и оригинальная операция, и точно такое же решение...

Member 11012743

я определяю параметра хранимой процедуры в качестве даты и времени и передает значение datetimepicker, чтобы он

OriginalGriff

Это действительно отдельный вопрос - и, вероятно, лучше как один, так как код в этих маленьких текстовых полях работает не слишком хорошо. :смеяться:

Поэтому начните новый вопрос и покажите код приложения, код SP и точное сообщение об ошибке.
Разместите ссылку здесь, и я посмотрю на нее.

Member 11012743

ладно

Рейтинг:
31

Shanu2rick

Попробуйте преобразовать строку в DateTime.

string datetime="01-10-2013 09:15 ص";
DateTime newdatetime = Convert.ToDateTime(datetime);


Если вы все еще получаете ошибку, пожалуйста, поделитесь ею.


Рейтинг:
24

pranathis012

Привет,


то, что вы пытаетесь сделать, - это напрямую передать строковое значение с параметром datetime.
Это не очень хороший способ, независимо от того, как вы используете типы данных в sql, вы должны и должны передавать одни и те же значения, иначе вы столкнетесь с некоторой проблемой преобразования.
Пожалуйста, преобразуйте ваше строковое значение в datetime с помощью convert.

string str="01-10-2013 09:15 ص";

DateTime dt1=Convert.ToDateTime(str);


Рейтинг:
2

P.S Vijay

Это может быть, что вы пытаетесь объединить в тип nvarchar с полем типа datetime. Вы должны использовать преобразования http://msdn.microsoft.com/en-us/library/ms187928.aspx[ прежде чем сделать это.


Рейтинг:
2

Tejal S

В строке, из-за которой вы столкнулись с этой ошибкой, есть не алфавитно-цифровой символ(ο).
Попробуйте его с любой буквенно-цифровой, он будет работать