Текущий архив: 2005.03.20;
Скачать: CL | DM;
Вниз
Сравнение дат Найти похожие ветки
← →
Cat © (2005-03-04 13:58) [0]Есть дата "01.01.2005". Необходимо сравнить с датой из Dbf файла, а там 05 стоит, в результате, понимается как 1905 год и сравнить невозможно (хотя одинаковые на самом деле).
Есть какие-то функции преобразования или как вообще быть ?
← →
Eraser © (2005-03-04 14:00) [1]Сравнивай без всяких преобразований переменные типа TDateTime.
← →
Eraser © (2005-03-04 14:01) [2]Сравнивай без всяких преобразований переменные типа TDateTime.
← →
Cat © (2005-03-04 14:27) [3]Бесполезно
← →
Eraser © (2005-03-04 14:42) [4]Cat ©
В этом DBF файле поле с датой имеет какой тип? TDateTime или String?
← →
Cat © (2005-03-04 14:48) [5]В DBF тип Date
← →
kukuikar © (2005-03-04 14:48) [6]StrToDate()
DateTimeToString()
DateTimeFormat()
← →
Anatoly Podgoretsky © (2005-03-04 14:50) [7]Cat © (04.03.05 13:58)
Выбросить такую базу и перейти на обычный dBase/FoxPro
← →
Cat © (2005-03-04 14:59) [8]Да я б судовольствием, только клиенты такие базы присылают...
← →
Eraser © (2005-03-04 15:04) [9]Cat ©
Ну тогда прийдётся извращаться и вручную добавлять 100 лет )
← →
Anatoly Podgoretsky © (2005-03-04 15:07) [10]Cat © (04.03.05 14:59) [8]
Так сначала выясни в каком они формате данные присылают, возможно ты неправильно работает, но если твое [0] правда, то эта база должна была погибнуть в приказном поряде еще 1.01.2000 года, поскольку в ней проблема 2000
← →
Anatoly Podgoretsky © (2005-03-04 15:08) [11]Eraser © (04.03.05 15:04) [9]
А как ты различишь 1905 и 2005? Методом орла и решки?
← →
Плохиш © (2005-03-04 15:19) [12]Может в национальные настройки заглянуть? Что там стоит для интерпретации двузнаковых годов?
← →
MU (2005-03-04 15:19) [13]доступ к Dbf-таблице через что?
← →
Eraser © (2005-03-04 15:24) [14]Anatoly Podgoretsky ©
А как ты различишь 1905 и 2005?
Тут уж надо смотреть, что там за данные. Если может быть и то и другое- тогда эта задача не решаема.
Плохиш ©
Так я уже спрашивал насчёт типа даты.
← →
Cat © (2005-03-04 15:28) [15]доступ к Dbf-таблице через что? Через компонент TDBF
← →
MU (2005-03-04 15:37) [16]>>Через компонент TDBF
Кто такой?
← →
Cat © (2005-03-04 15:39) [17]Есть такой компонентик :)
← →
MU (2005-03-04 15:41) [18]вообще-то в Dbf дата хранится в символьном виде
в формате YYYYMMDD
посмотрите на содержимое файла, как там записана дата
← →
Eraser © (2005-03-04 15:42) [19]Cat ©
Сам таким компонентиком пользуюсь! Проблем с TDateTime не замечал.
Приведи участок кода, где считываешь дату из БД.
← →
MU (2005-03-04 15:46) [20]и еще
Языки и рег. настройки посмотрите
Краткий формат даты .... какой?
← →
Anatoly Podgoretsky © (2005-03-04 16:05) [21]Eraser © (04.03.05 15:24) [14]
Автор уже сказал, там 05
MU (04.03.05 15:41) [18]
С чего это ты так решил, смотрел таблицу хекс вьювером?
Как тогда быть с утверждением автора, что там не так, кто из вас неискренен?
← →
MU (2005-03-04 16:13) [22]2 Anatoly Podgoretsky
>>С чего это ты так решил, смотрел таблицу хекс вьювером?
>>Как тогда быть с утверждением автора, что там не так, кто из >>вас неискренен?
Смотрел много и хекс и не хекс
Чем смотрел автор и где, не могу знать
← →
Anatoly Podgoretsky © (2005-03-04 16:15) [23]MU (04.03.05 16:13) [22]
Для тебя, пример реальной базы dr.dbf
010205 Петров Петр
...
010205 Сидоров Сидор
← →
MU (2005-03-04 16:17) [24]2 Anatoly Podgoretsky
для вас -не менне реальный
a
e 8 e TYP_DOC C DATE_DOC D NUM_DOC C
FROM C
DATE_CR C! TABNO C, ID_REC C2
0015199602128 1 24Š%C3 0001199602131410 24Š%x3 0015199602128 24Š7&3 0001199602131410 24Š703 0001199602131410 24Š713 0001199602131410 24Š723 0001199602131410 24Š733 0001199602131410 24Š743 0001199602131410 24Š753 0001199601051348 24Š763 0001199601051348 24Š773 000119960213111111 24Š783 000119960213111111 24Š793 000119960213111111 24Š7@3 0008199602292
← →
Eraser © (2005-03-04 16:20) [25]Открыл файл, созданный этим компонентом в старом-добром DatabaseDesktop... все даты отображаются нормально - 6.04.1985, потому что в моей программе я присваиваю их нормально, т.е.
FieldByName("Date").AsDateTime := now;
← →
Eraser © (2005-03-04 16:20) [26]Открыл файл, созданный этим компонентом в старом-добром DatabaseDesktop... все даты отображаются нормально - 6.04.1985, потому что в моей программе я присваиваю их нормально, т.е.
FieldByName("Date").AsDateTime := now;
← →
Anatoly Podgoretsky © (2005-03-04 16:23) [27]Твой пример не имеет отношение к таблице автора, у него, как у меня. Поэтому слова "вообще-то в Dbf дата хранится в символьном виде в формате YYYYMMDD" являются ересью по отношению к нему, не хранится, два человека тебе привели данные что это не так, он и я. Ну зачем нам твоя таблица, где хранится не так.
Вопрос простой, возьмем на моем примере, первая дата 1905, вторая 2005. Как определить где какая? Проблема известная, называется проблема 2000, эту проблему программисты устраивали сами для себя, говоря на наш век хватит, не хватило.
← →
Anatoly Podgoretsky © (2005-03-04 16:27) [28]Вы бы поделились с автором для общественным, точным форматом таблицы. Поскольку кто то из вас говорит не то. А так как ты утвердаешь в [4] и в [25] что там есть столетие, то наверно это он говорит непраду.
← →
Eraser © (2005-03-04 16:29) [29]Итак вопрос.
В каком формате в таблицах dbf храница информация о дате? В float, как в TDateTime или в текстовом?
← →
Anatoly Podgoretsky © (2005-03-04 16:30) [30]Eraser © (04.03.05 16:29) [29]
Вопрос ответа не имеет. Он абсолютно обсурден.
Скажи в какой кодировке файл abc
← →
Eraser © (2005-03-04 16:32) [31]ИМХО в этих таблицах он храница в текстовом формате, т.е. если запишешь со столетиями- будет со столетиями...
← →
MU (2005-03-04 16:35) [32]2 Anatoly Podgoretsky ©
:)
Ну тогда ваше утверждение, что "нет не хранится" является ересью по отношению ко мне :)
Значит, бывает хранится, а бывает - нет.
На этом согласимся? Или голосование устроим?
← →
Eraser © (2005-03-04 16:41) [33]Я за голосование! Жаль на форуме движка голосований нету... ))
← →
Anatoly Podgoretsky © (2005-03-04 16:42) [34]MU (04.03.05 16:35) [32]
Мое утверждение не является ересью, поскольку оно опирается на утверждение автора и на мой многолетний опыт, за это время я навидался много разных баз, где таблицы имели расширение .dbf
Более того даже в наше время современные базы, такие как скажем MS SQL не запрещают мне использовать это расширение или любое другое, которое я предпочту.
Пример же из реальной базы, где хранится только две цифры из года я привел, и это не редкость для старых баз.
Твои сообщения, не основаны ни на чем, в отличии от сообщений автора и Eraser, которые обладают подлинной базой, так почему бы им не привести точный ее формат. Но если утверждение насчет двух цифр истинно, то задача решение не имеет.
← →
Anatoly Podgoretsky © (2005-03-04 16:45) [35]Eraser © (04.03.05 16:41) [33]
Да давай проголосуем земля круглая или плоская. Или чему равно число ПИ в разное время года.
← →
Eraser © (2005-03-04 16:51) [36]))
Вот структура:
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000000 03 69 03 04 02 00 00 00 A1 02 B9 03 00 00 00 00 .i......¡.¹.....
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 57 00 00 .............W..
00000020 43 4C 49 45 4E 54 5F 55 49 44 00 43 00 00 00 00 CLIENT_UID.C....
00000030 46 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F...............
00000040 43 4F 4D 50 00 00 00 00 00 00 00 43 00 00 00 00 COMP.......C....
00000050 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2...............
00000060 43 41 54 00 00 00 00 00 00 00 00 43 00 00 00 00 CAT........C....
00000070 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2...............
00000080 4E 49 43 00 00 00 00 00 00 00 00 43 00 00 00 00 NIC........C....
00000090 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2...............
000000A0 46 49 52 53 54 5F 4E 41 4D 45 00 43 00 00 00 00 FIRST_NAME.C....
000000B0 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2...............
000000C0 4C 41 53 54 5F 4E 41 4D 45 00 00 43 00 00 00 00 LAST_NAME..C....
000000D0 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2...............
000000E0 42 49 52 54 48 44 41 59 00 00 00 44 00 00 00 00 BIRTHDAY...D....
000000F0 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000100 47 45 4E 44 45 52 00 00 00 00 00 4E 00 00 00 00 GENDER.....N....
00000110 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000120 4C 41 53 54 5F 53 45 53 53 00 00 44 00 00 00 00 LAST_SESS..D....
00000130 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000140 4C 41 53 54 5F 55 50 44 00 00 00 44 00 00 00 00 LAST_UPD...D....
00000150 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000160 42 4C 41 43 4B 5F 4C 49 53 54 00 4C 00 00 00 00 BLACK_LIST.L....
00000170 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000180 50 48 4F 54 4F 00 00 00 00 00 00 43 00 00 00 00 PHOTO......C....
00000190 FE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 þ...............
000001A0 53 48 4F 57 5F 53 54 41 54 00 00 4E 00 00 00 00 SHOW_STAT..N....
000001B0 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000001C0 50 4F 53 49 54 49 4F 4E 00 00 00 43 00 00 00 00 POSITION...C....
000001D0 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2...............
000001E0 44 45 50 41 52 54 4D 45 4E 54 00 43 00 00 00 00 DEPARTMENT.C....
000001F0 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2...............
00000200 4F 46 46 5F 50 48 4F 4E 45 00 00 43 00 00 00 00 OFF_PHONE..C....
00000210 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2...............
00000220 4D 4F 42 5F 50 48 4F 4E 45 00 00 43 00 00 00 00 MOB_PHONE..C....
00000230 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2...............
00000240 45 4D 41 49 4C 00 00 00 00 00 00 43 00 00 00 00 EMAIL......C....
00000250 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2...............
00000260 57 57 57 00 00 00 00 00 00 00 00 43 00 00 00 00 WWW........C....
00000270 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2...............
00000280 41 44 52 00 00 00 00 00 00 00 00 43 00 00 00 00 ADR........C....
00000290 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2...............
000002A0 0D 2A 20 20 20 20 20 20 .*
← →
Eraser © (2005-03-04 16:53) [37]Поля BIRTHDAY, LAST_SESS, LAST_UPD имеют тип D, т.е. дату, а не C, значит всётаки используется если не TDateTime, значит какой-то его аналог...
← →
MU (2005-03-04 16:54) [38]О!!! У товарища тоже 8 знаков на дату!
2:2
← →
MU (2005-03-04 16:58) [39]2 Eraser © (04.03.05 16:53) [37]
Вы добавтье пару записей в таблицу и посмотрите на ДАННЫЕ, а не на структуру
← →
Eraser © (2005-03-04 17:00) [40]Даты выгледят вот так:
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
000007A0 32 30 30 35 30 32 30 34 20050204
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000790 31 39 38 35 30 19850
000007A0 34 30 36 406
← →
Anatoly Podgoretsky © (2005-03-04 17:08) [41]Eraser © (04.03.05 16:51) [36]
Это очень похоже на dBase, этот файл тебе дал автор? Тогда чего же он лапшу вешает на выступающие предметы. Это SDF формат.
← →
MU (2005-03-04 17:08) [42]
> Anatoly Podgoretsky © (04.03.05 16:42) [34]
> > Мое утверждение не является ересью, поскольку оно опирается
> на утверждение автора и на мой многолетний опыт, за это
> время я навидался много разных баз, где таблицы имели расширение
> .dbf
Но не все они открывались компонентом TDBF?
2 Eraser ©
30 32 30 34 20050204
Осталось добиться того же от авторши вопроса.
← →
Eraser © (2005-03-04 17:11) [43]ИМХО файлы которые попались автору вопроса созданы на каком-то старом движке... или есть вариант, что там даты храняться в текстовых полях.
Страницы: 1 2 вся ветка
Текущий архив: 2005.03.20;
Скачать: CL | DM;
Память: 0.59 MB
Время: 0.032 c