Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Datetime; milliseconds / 7 сообщений из 7, страница 1 из 1
03.01.2002, 09:11
    #32020126
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Datetime; milliseconds
Вроде этот вопрос обсуждался, но поиск по сайту ничего не дал.

При использовании типа datetime в таблицах значение даты/времени хранится полностью, с миллисекундами. При попытке достать его в ADO или OLEDB миллисекунды = 0.

Причем если посмотреть маппинг SQL типов данных в OLEDB'шные, то видно, что datetime, как и smalldatetime маппится в DBTYPE_DBTIMESTAMP. Но в структуре DBTIMESTAMP нет поля, соответствующего миллисекундам!!! Это что же получается - хранить можно, а достать можно только в обрезанном виде?!
...
Рейтинг: 0 / 0
03.01.2002, 09:46
    #32020131
Datetime; milliseconds
typedef struct tagDBTIMESTAMP {
SHORT year;
USHORT month;
USHORT day;
USHORT hour;
USHORT minute;
USHORT second;
ULONG fraction; // Вот они - миллисекунды
} DBTIMESTAMP;

"Fraction—Billionths of a second: 0–999,999,999."

Но, в MSDN есть туманные намеки, что некоторые OLE-DB провайдеры могут обрезать даты без предупреждений.

А версия MDAC - 2.6? В 2.5 были какие-то проблемы с этим, не говоря уже о предыдущих.
...
Рейтинг: 0 / 0
03.01.2002, 11:59
    #32020145
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Datetime; milliseconds
MSDN я тоже читаю на досуге
Вот как раз поле fraction, судя по всему, не миллисекунды. Это куда больше похоже на кол-во секунд, прошедших с какой-то там абсолютной даты. MDAC у меня последний.
...
Рейтинг: 0 / 0
03.01.2002, 14:09
    #32020160
Datetime; milliseconds
Миллисекунды в адо-рекордсете есть! А вот вытащить их не просто.
Убедиться в этом можно, если воспользоваться в JScript методом getMilliseconds() объекта Date, а значение этому объекту засунуть из поля открытого рекордсета.
Мне удалось получить миллисекунды только таким кривым образом.
...
Рейтинг: 0 / 0
03.01.2002, 15:33
    #32020163
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Datetime; milliseconds
Глеб, а если без JScript? Ну вот не нужен мне JScript. Пупырюсь всякими способами перегнать из ADO рекордсета в SYSTEMTIME. Получается только с потерей миллисекунд. И если посмотреть MFC классы (COleDateTime например), то там перевод в SYSTEMTIME в явном виде прописан без миллисекунд. То есть этому полю присваивается 0.
Если кто знает, как из _variant_t перевести в SYSTEMTIME с миллисекундами, напишите плз!
...
Рейтинг: 0 / 0
04.01.2002, 05:54
    #32020180
BiSas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Datetime; milliseconds
А если хотя бы временно (пока проблема не решена) вытаскивать миллисекунды отдельно при помощи DatePart(ms,FieldDate)
...
Рейтинг: 0 / 0
04.01.2002, 06:34
    #32020183
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Datetime; milliseconds
Увы. У меня была такая идея, но... Распаковка времени нужна не на уровне SQL, а уже у клиента. Архитектура с несколькими уровнями, куда лечение проблемы заплатками не укладывается.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Datetime; milliseconds / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]