|
|
|
req_help! странный формат хранения даты
|
|||
|---|---|---|---|
|
#18+
никто не сталкивался с таким хранением данных в ДБФах : DATE_O Character(4) <- 12 64 25 00 DATE_M Character (4) <- 56 72 25 20 DATE_DG Character (4) <- AC 70 25 20 в 16-чных последовательностях зашиты даты 01.11.2005, 01.01.1997, 01.01.2007 интересует как собстно перевести в человеческий формат эти данные человеческим способом ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 11:04 |
|
||
|
req_help! странный формат хранения даты
|
|||
|---|---|---|---|
|
#18+
KeyOffникто не сталкивался с таким хранением данных в ДБФах : DATE_O Character(4) <- 12 64 25 00 DATE_M Character (4) <- 56 72 25 20 DATE_DG Character (4) <- AC 70 25 20 в 16-чных последовательностях зашиты даты 01.11.2005, 01.01.1997, 01.01.2007 интересует как собстно перевести в человеческий формат эти данные человеческим способом ? Похоже, что первые два байта в обратном порядке это количество дней от '12.11.1926'. Навскидку, попробуй на своих данных что-то типа: {12.11.1926} + (ASC(SUBSTR(DATE_O, 2, 1)) * 0xFF + ASC(SUBSTR(DATE_O, 1, 1))) А что означают остальные два байта (может быть время) и почему такая странная точка отсчета, я сказать не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 15:14 |
|
||
|
req_help! странный формат хранения даты
|
|||
|---|---|---|---|
|
#18+
Исходные ссылке уже в архиве, поэтому просто циататы ================================ Формат хранения типа DateTime FoxPro 8 байт Первые 4 байта - количество дней по Юлианскому исчислению (функция SYS(11, DateTime())) Следующие 4 байта - количество миллисекунд с полуночи с точностью до 333 миллисекунд MS SQL при конвертации в Double Целая часть - количество дней от 01.01.1900 Дробная часть - отношение количества миллисекунд прошедших с полуночи на количество миллисекунд в сутках (86400000) с точностью до 3.33 миллисекунд (в 100 раз точнее, чем в FoxPro) Excel при конвертации в Double Целая часть - количество дней от 31.12.1900 Дробная часть - отношение количества миллисекунд прошедших с полуночи на количество миллисекунд в сутках (86400000). Точность неизвестна! ============================ См. в "Библиотека алгоритмов 151б-200б" серия "Библиотека технической кибернетики" издательства "Радио и связь" 1981 год 199б - это значит наша модификация импортного алгоритма. Состоит из 4-х процедур: первые две порядковый номер дня отсчитывается от начала юлианского периода(1 января 4713год до н.э.), а другие две от 1 января 1900 года. Юлианский период это промежуток времени в 7980 лет, исползуемый в астрономических и хронологических расчетах. Благодаря этому длительность того или иного астрономического или исторического события, выраженная в сутках, может быть определена путем простого вычитания номеров дней, ссответствующих концу и началу события.( из описания в книге). Алгоритмы приведены в алголе. ============================ Судя по всему, ты ошибся в последних двух датах: DATE_M и DATE_DG. Последний байт должен иметь значение 00 в обеих случаях. Тогда это переводится в дату следующим образом Код: plaintext 1. 2. Получим значение 01.01.1997 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 22:55 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1589446]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 383ms |

| 0 / 0 |
