Как бороться с нечетной датой, возвращаемой из sql в ASP.NET C # - PullRequest
1 голос
/ 20 января 2012

У меня есть формат даты гггг-мм-дд чч: мм: сс.ннн в моем источнике данных sql

когда я смотрю на данные в SSMS, все выглядит отлично

но когда я получаю возвращаемое значение в моем C #, это выглядит так:

40927,7895138889

но значение в источнике:

2011-12-29 21:52:47.427

Я не видел этого раньше, кто-нибудь может посоветовать, что может происходить?

спасибо.

edit: я возвращаю это значение из sql server 2005 на мой учебный сайт asp.net mvc 1.0 nerddinner

1 Ответ

2 голосов
/ 20 января 2012

Даты хранятся в виде чисел в SQL, х дней после некоторой даты начала (я думаю, в 1753 году).Почему-то похоже, что вы сохраняете возвращаемое значение даты в поле с плавающей точкой.Попробуйте добавить свои 40927 к 01.01.1753 (40 927 дней после 1 января 1753 г.) и посмотрите, получите ли вы правильное значение

Попробуйте эту команду SQL

select cast( cast('1/1/1900' as dateTime) as float)

, она вернет 0с указанием 1 января 1900 года - первая дата.Я подозреваю, что тип поля - smalldatetime, в котором даты и время дня хранятся с меньшей точностью, чем тип данных datetime.Допустимый диапазон дат для этого типа данных - с 1 января 1900 года по 6 июня 2079 года.

Число представляет число дней после 1 января 1900 года. Дробная часть - это часть времени.Попробуйте это:

select  cast(40927.7895138889 as dateTime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...