SqlParameter & DateTime type: значение округляется!??
От: EvgenyV  
Дата: 05.02.07 17:58
Оценка:
Привет, народ!
Может кто сталкивался с такой проблемой: параметризованная дата округляется.

...
SqlParameter dataParameter = (SqlParameter)command.CreateParameter();
dataParameter.ParameterName = m_paramPrefix + paramName;
object objValue = queryParams[paramName];
dataParameter.SqlValue = objValue; - значение objValue    {2006-11-20 11:59:59 PM}    object {System.DateTime}
после присвоения значение 
dataParameter.SqlValue изменяется на -
dataParameter.SqlValue    {2006-11-21 12:00:00 AM}    object {System.Data.SqlTypes.SqlDateTime}
....


С чего бы ему округляться кверху???

Заранее спасибо!
Евгений
Re: SqlParameter & DateTime type: значение округляется!??
От: _d_m_  
Дата: 05.02.07 20:55
Оценка:
Здравствуйте, EvgenyV, Вы писали:

EV>Привет, народ!

EV>Может кто сталкивался с такой проблемой: параметризованная дата округляется.

EV>dataParameter.SqlValue = objValue; — значение objValue {2006-11-20 11:59:59 PM} object {System.DateTime}

EV>после присвоения значение
EV>dataParameter.SqlValue изменяется на -
EV>dataParameter.SqlValue {2006-11-21 12:00:00 AM} object {System.Data.SqlTypes.SqlDateTime}

Милисекунды? Чему равно .Millisecond?
Re[2]: SqlParameter & DateTime type: значение округляется!??
От: EvgenyV  
Дата: 06.02.07 05:49
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>Здравствуйте, EvgenyV, Вы писали:


EV>>Привет, народ!

EV>>Может кто сталкивался с такой проблемой: параметризованная дата округляется.

EV>>dataParameter.SqlValue = objValue; — значение objValue {2006-11-20 11:59:59 PM} object {System.DateTime}

EV>>после присвоения значение
EV>>dataParameter.SqlValue изменяется на -
EV>>dataParameter.SqlValue {2006-11-21 12:00:00 AM} object {System.Data.SqlTypes.SqlDateTime}

___>Милисекунды? Чему равно .Millisecond?


.999
Re[3]: SqlParameter & DateTime type: значение округляется!??
От: _d_m_  
Дата: 06.02.07 07:38
Оценка:
Здравствуйте, EvgenyV, Вы писали:

___>>Милисекунды? Чему равно .Millisecond?


EV>.999


Ну тогда ничего удивительного. Дата с Millisecond == 0 спасет отца русской демократии
Re[4]: SqlParameter & DateTime type: значение округляется!??
От: EvgenyV  
Дата: 06.02.07 07:50
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>Здравствуйте, EvgenyV, Вы писали:


___>>>Милисекунды? Чему равно .Millisecond?


EV>>.999


___>Ну тогда ничего удивительного. Дата с Millisecond == 0 спасет отца русской демократии


Спасибо .
Но все равно странно. Какого х... округлять?!
За время "потерянных" 999 миллисекунд чего-то может и произойти!
Re[5]: SqlParameter & DateTime type: значение округляется!??
От: raptor_xplat Россия  
Дата: 06.02.07 08:27
Оценка:
Здравствуйте, EvgenyV, Вы писали:

EV>Здравствуйте, _d_m_, Вы писали:


___>>Здравствуйте, EvgenyV, Вы писали:


___>>>>Милисекунды? Чему равно .Millisecond?


EV>>>.999


___>>Ну тогда ничего удивительного. Дата с Millisecond == 0 спасет отца русской демократии


EV>Спасибо .

EV>Но все равно странно. Какого х... округлять?!
EV>За время "потерянных" 999 миллисекунд чего-то может и произойти!

А можете привести пример?! , что может произойти за 1 мс при вставке данных...
А если вы работаете с 1 потоком, который пишет в БД, а INSERT работает более 1 ms.
Так что эта 1 ms для вас что есть что нету, роли не сыграет.
Re[5]: SqlParameter & DateTime type: значение округляется!??
От: _d_m_  
Дата: 06.02.07 08:55
Оценка:
Здравствуйте, EvgenyV, Вы писали:

EV>Здравствуйте, _d_m_, Вы писали:


___>>Здравствуйте, EvgenyV, Вы писали:


___>>>>Милисекунды? Чему равно .Millisecond?


EV>>>.999


___>>Ну тогда ничего удивительного. Дата с Millisecond == 0 спасет отца русской демократии


EV>Спасибо .

EV>Но все равно странно. Какого х... округлять?!

Это связано с внутреним форматом хранения даты и неявными преобразованиями при конвертации.

Значения типа datetime хранятся внутри компонента SQL Server 2005 Database Engine в виде 4-байтных целых чисел. Первые четыре байта содержат количество дней до или после даты отсчета: 1 января 1900 года. Дата отсчета является системной датой. Вторые четыре байта содержат текущее значение времени, представленного в виде трехсотых долей секунды, прошедших после полуночи.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.