powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хранение даты-времени с милисекундами
12 сообщений из 12, страница 1 из 1
Хранение даты-времени с милисекундами
    #32454640
Игорь Р
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, мне нужно хранить дату и время с милисекундами в базе. Я использую тип TimeStamp. Есть ли в нем милисекунды и как их потом увидеть в DBGrid (в DisplayFormat колонки по нелпу я не нашел букв, соответствующих выводу милисекунд)
...
Рейтинг: 0 / 0
Хранение даты-времени с милисекундами
    #32454755
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Граблей тут сразу несколько.
Чем цепляешься к серверу сперва скажи. Потом обсудим дальше.
...
Рейтинг: 0 / 0
Хранение даты-времени с милисекундами
    #32454772
Игорь Р
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложение на Delphi, использую IBExpress.
В базе таблица
CREATE TABLE "CARBAZA"
(
"ID" INTEGER NOT NULL,
"CAR_ID" INTEGER,
"DT" TIMESTAMP DEFAULT Current_TimeStamp,
PRIMARY KEY ("ID")
);
SET TERM ^ ;

Делаю Insert into carbaza (car_id) values (5)
По идее сервер сам подставляет Current_TimeStamp. Но делает он это без ms. Руками я также не могу ввести с ms
...
Рейтинг: 0 / 0
Хранение даты-времени с милисекундами
    #32454828
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слушай сюда.
Сервер тут невиновен (почти).
Дело в том, что IBX для декодирования TimeStamp пользуется функцией API - isc_decode_timestamp(). А та, в свою очередь, пишет результат в С-шную структуру tm.
А теперь давай посмотрим на эту структуру (дельфийский вариант)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  { C Date/Time Structure }
  TCTimeStructure = record
    tm_sec : integer;   { Seconds }
    tm_min : integer;   { Minutes }
    tm_hour : integer;  { Hour ( 0  --23) }
 
    tm_mday : integer;  { Day of month ( 1  --31) }
 
    tm_mon : integer;   { Month ( 0  --11) }
 
    tm_year : integer;  { Year (calendar year minus  1900 ) }
    tm_wday : integer;  { Weekday ( 0  --6) Sunday = 0) }
 
    tm_yday : integer;  { Day of year ( 0  --365) }
 
    tm_isdst : integer; {  0  if daylight savings time is not in effect) }
  end;

Милисекунды здесь видишь, нет?
...
Рейтинг: 0 / 0
Хранение даты-времени с милисекундами
    #32454839
Игорь Р
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какой выход (кроме хранения ms в отдельной колонке ) или это не такой уже плохой вариант? хранить ms отдельно. В базу вкидывать записи не надеясь на Current_TimeStamp, а самому определять время и ms
...
Рейтинг: 0 / 0
Хранение даты-времени с милисекундами
    #32454887
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да хранить-то можно в том же самом поле. Это не проблема. Проблема в том, чтоб записать данные с учётом милисекунд, а потом прочитать их.
Если не ошибаюсь, то в FIB+, Бузаджи решил эту проблему, отказавшись от isc_decode_ххх, и написав свою собственную функцию. Помнится, на epsylon.public.interbase, кто-то предлагал вариант и для IBX.
...
Рейтинг: 0 / 0
Хранение даты-времени с милисекундами
    #32454904
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор
Да хранить-то можно в том же самом поле. Это не проблема. Проблема в том, чтоб записать данные с учётом милисекунд, а потом прочитать их.

Эх, если б это нужно было б под Линукс и на C то рассказал бы как это делается
...
Рейтинг: 0 / 0
Хранение даты-времени с милисекундами
    #32454908
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты человеку алгоритм просто расскажи.
...
Рейтинг: 0 / 0
Хранение даты-времени с милисекундами
    #32454926
Игорь Р
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так а как все же хранить в том же поле?
...
Рейтинг: 0 / 0
Хранение даты-времени с милисекундами
    #32455210
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Так а как все же хранить в том же поле?
Да легко и непринужденно
Например вставить запись можно так
insert into carbaza (card_id,dt) values (5,'2004-03-24 15:29:00.2345' )
или так
insert into carbaza (card_id,dt) values (5,'24.03.2004 15:29:00.2345' )
Причем независимо от локали ( по крайней мере у меня это работало и в Винде и в Линуксе).

Тут вопрос как эти милисекунды получить (хотя мили это 10^(-3), а здесь 10^(-4))

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
В  Линуксе есть функция    int gettimeofday(struct timeval *tv, struct timezone *tz);
      struct timeval {
               long tv_sec;         /* seconds */ 
               long tv_usec;   /* microseconds */ 
       };
       struct timezone {
               int  tz_minuteswest;  /* minutes W of Greenwich */ 
               int  tz_dsttime;      /* type of dst correction */ 
       };

Поделить tv_usec на 100 (нацело) и далее нужную строку можно сформировать через strftime.
Ну а как получить эти милисекунды из базы, можно узнать если изучить исходный текст
examples/apifull.c - поставляется со всеми IB и FB Чет мне лень самому все это описывать.
...
Рейтинг: 0 / 0
Хранение даты-времени с милисекундами
    #32455238
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так же как и раньше.

ISC_TIME = ULong;

TISC_TIMESTAMP = record
timestamp_date: ISC_DATE;
timestamp_time: ISC_TIME;
end;

Так вот этом самом ISC_TIME, помимо секунд, сидят и милисекунды.
...
Рейтинг: 0 / 0
Хранение даты-времени с милисекундами
    #32455250
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Так вот этом самом ISC_TIME, помимо секунд, сидят и милисекунды

Код: plaintext
ISC_TIME mod  10000  
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хранение даты-времени с милисекундами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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