|
|
|
Хранение даты-времени с милисекундами
|
|||
|---|---|---|---|
|
#18+
Подскажите, мне нужно хранить дату и время с милисекундами в базе. Я использую тип TimeStamp. Есть ли в нем милисекунды и как их потом увидеть в DBGrid (в DisplayFormat колонки по нелпу я не нашел букв, соответствующих выводу милисекунд) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 12:44 |
|
||
|
Хранение даты-времени с милисекундами
|
|||
|---|---|---|---|
|
#18+
Граблей тут сразу несколько. Чем цепляешься к серверу сперва скажи. Потом обсудим дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 13:33 |
|
||
|
Хранение даты-времени с милисекундами
|
|||
|---|---|---|---|
|
#18+
Приложение на 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 13:39 |
|
||
|
Хранение даты-времени с милисекундами
|
|||
|---|---|---|---|
|
#18+
Слушай сюда. Сервер тут невиновен (почти). Дело в том, что IBX для декодирования TimeStamp пользуется функцией API - isc_decode_timestamp(). А та, в свою очередь, пишет результат в С-шную структуру tm. А теперь давай посмотрим на эту структуру (дельфийский вариант) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Милисекунды здесь видишь, нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 13:56 |
|
||
|
Хранение даты-времени с милисекундами
|
|||
|---|---|---|---|
|
#18+
А какой выход (кроме хранения ms в отдельной колонке ) или это не такой уже плохой вариант? хранить ms отдельно. В базу вкидывать записи не надеясь на Current_TimeStamp, а самому определять время и ms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 14:01 |
|
||
|
Хранение даты-времени с милисекундами
|
|||
|---|---|---|---|
|
#18+
Да хранить-то можно в том же самом поле. Это не проблема. Проблема в том, чтоб записать данные с учётом милисекунд, а потом прочитать их. Если не ошибаюсь, то в FIB+, Бузаджи решил эту проблему, отказавшись от isc_decode_ххх, и написав свою собственную функцию. Помнится, на epsylon.public.interbase, кто-то предлагал вариант и для IBX. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 14:13 |
|
||
|
Хранение даты-времени с милисекундами
|
|||
|---|---|---|---|
|
#18+
автор Да хранить-то можно в том же самом поле. Это не проблема. Проблема в том, чтоб записать данные с учётом милисекунд, а потом прочитать их. Эх, если б это нужно было б под Линукс и на C то рассказал бы как это делается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 14:17 |
|
||
|
Хранение даты-времени с милисекундами
|
|||
|---|---|---|---|
|
#18+
Ты человеку алгоритм просто расскажи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 14:19 |
|
||
|
Хранение даты-времени с милисекундами
|
|||
|---|---|---|---|
|
#18+
Так а как все же хранить в том же поле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 14:27 |
|
||
|
Хранение даты-времени с милисекундами
|
|||
|---|---|---|---|
|
#18+
>Так а как все же хранить в том же поле? Да легко и непринужденно Например вставить запись можно так 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. Поделить tv_usec на 100 (нацело) и далее нужную строку можно сформировать через strftime. Ну а как получить эти милисекунды из базы, можно узнать если изучить исходный текст examples/apifull.c - поставляется со всеми IB и FB Чет мне лень самому все это описывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 16:02 |
|
||
|
Хранение даты-времени с милисекундами
|
|||
|---|---|---|---|
|
#18+
Так же как и раньше. ISC_TIME = ULong; TISC_TIMESTAMP = record timestamp_date: ISC_DATE; timestamp_time: ISC_TIME; end; Так вот этом самом ISC_TIME, помимо секунд, сидят и милисекунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 16:10 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=480&tid=1578973]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
4ms |
| others: | 246ms |
| total: | 346ms |

| 0 / 0 |
