2011-06-22 3 views
1

У меня есть таблица, в которой есть поле starttime. Это поле типа DateTime, и я настраиваю его на (Hour to Minute) in Specials, потому что я хочу хранить только время в этом формате.Формат времени и даты в формате Informix и .NET

например: 10:45

Сейчас в моем коде: У меня есть следующая проблема:

prd.StartTime = DateTime.Parse(record[1]);//.ToString("H:m")); 


After Tracing: `StartTime = 6/22/2011 10:45:00 AM` 

Когда я вставить запись в этой таблице, я получаю следующее исключение:

IBM.Data.Informix.IfxException: ERROR [22008] [Informix .NET provider][Informix] 
Non-numeric character in datetime or interval. 

EDIT: Когда я делаю default value включен для thi s и попробуйте вставить без starttime, и выберите значение, которое я нашел, было 17:48, и когда я снова меняю значение Special на Year, значением по умолчанию является 2011-06-22 17:48:00.


EDIT2:

Я делаю StartTime собственность как string, а не DateTime и удается вставить. Оказывает ли это влияние на достоверность этого поля позже.

+1

Я не думаю, что эта строка кода, где ваша проблема. Все, что вы делаете, это установить переменную startTime на сегодняшнюю дату в 10:45 A.M. Как вы вставляете данные в свою базу данных? – therealmitchconnors

+0

да, но это поле в базе данных типа 'DateTime'. Но я указываю в функции' Special', чтобы быть ('Hour To Minute') именно этой частью. –

+0

Значение: '10: 45' –

ответ

1

DateTime.Parse("10:45") вполне допустимо. Тем не менее, он будет генерировать экземпляр DateTime, содержащий сегодняшнюю дату, и время, которое вы проанализировали.

Но ошибка, которую вы получаете, вероятно, вызвана тем фактом, что используемая вами база данных хочет сохранить дату в виде числа.

+0

База данных 'Informix', тип этого поля -' DateTime', 'Special' -' Hour to Minute'. –

+1

Дело в том, что база данных почти наверняка хранит дату как число внутри. Вам нужно выяснить, что вам нужно для его преобразования, прежде чем отправлять его в базу данных. Читайте в Informix .Net Provider. –

+2

Если столбец DATETIME HOUR TO MINUTE, вы должны либо (организовать интерфейс базы данных C#) отправить на сервер правильно структурированную структуру DATETIME HOUR TO MINUTE, либо вы должны организовать отправку правильно отформатированной строки. И правильно отформатированное означает «10:45» без лишних символов.Я не уверен, как вы это делаете, но это результат, которого вы должны достичь. Альтернативой было бы использовать 'EXTEND (?, HOUR TO MINUTE)' в выражении SQL, где ваше полное значение временной метки будет принято частью даты, а секунды будут отрублены с помощью операции «EXTEND». –

2

Я думаю, что это поможет вам:

prd.StartTime = DateTime.Parse(record[1].ToString()); 
+0

'record [1]' это уже строковое значение '' 10:45 "'. –

3
DateTime date = DateTime.Parse("10:45"); 

его работы для меня, я думаю, вы должны проверить, что это значение сохраняется в записи [1]

Смежные вопросы