Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Формат даты [D7]


Страницы:   1 2

Sam Stone ©   (2005-07-14 21:07:00) 

Коннекчусь к произвольной базе через ODBC. Как узнать, в каком формате хранится дата?


DiamondShark   (2005-07-16 11:24:00) [1]

Какая ужасная каша в голове...


sniknik   (2005-07-16 00:32:00) [2]

> Ты разницу между интерфейсом и реализацией понимаешь?
догадываюсь. ;о)) с трудом правда.... но мне хватает.

> Почему "вродебы ODBC - шных"?
потому что они скорее OLE DB-шные, под MSSQL и access протокол разрабатывался, раз для них значит OLED DB-шные. это уж потом все этот движок стали пользовать, вон даже DAO (ни к ODBC ни OLEDB отношения не имеет) теперь Jet использует, а был самостоятельный движок, и был раньше джета.
и еще потому что Jet это COM обьекты, сделан так. и все его ISAM-ы. т.е. предполагает управление именно под OLE DB. если бы было для ODBC то это были бы просто dll-ки (думаю так, возможно ошибаюсь. но не думаю ;о))).

> Ещё раз: ODBC -- это просто стандарт API.
;о)) чтобы сказать еще раз, надо сказать это хотя бы раз... не вижу, где первый раз?
(хотя с самим утверждением спорить не буду :)

> Кстати, jet и OLE DB -- это разные вещи
типа ктото спорит?

> А для чего вообще создают стандарты?
я тебе не говорю "не пользуйся стандартами", я говорю "пользуйся теми что проше в использовании и быстрее в работе" (и кстати не тебе говорил, а автору вопроса). ты не хочеш, твое дело, "уламывать" не намерен. (автора тоже)
как продолжать этот спор не спор - высказывание истин с видом что опонент их не знает.


DiamondShark   (2005-07-15 23:20:00) [3]


> sniknik ©   (15.07.05 21:37) [21]


> но тут у меня другое подозрение ;о))
> что ODBC сам меняет это представление на параметр...

Естественно. ODBC -- это стандарт, набор соглашений, обязательных к реализации


> среди упомянутых - Аксес + (dbf, текстовые, парадокс, эксель)
> вродебы ODBC - шных драйверов, ни один не работает сам,
> все они передают запрос на выполнение jet-у (OLE DB),

Почему "вродебы ODBC - шных"?
Ещё раз: ODBC -- это просто стандарт API.
Кстати, jet и OLE DB -- это разные вещи, и скобочки тут не в кассу. Первое -- конкретный движок, второе -- ещё одна специпикаци API.

Ты разницу между интерфейсом и реализацией понимаешь?


> вот. и тут подходим с другой стороны к тому же самому, зачем
> чтото преобразовывать подставлять это в специальную форму
> для того чтобы его "разпреобразовали" назад?

А для чего вообще создают стандарты?


sniknik   (2005-07-15 21:37:00) [4]

> Мы про ODBC драйвер говорим.
тут согласен.
но тут у меня другое подозрение ;о))
что ODBC сам меняет это представление на параметр...
и вот почему.
среди упомянутых - Аксес + (dbf, текстовые, парадокс, эксель) вродебы ODBC - шных драйверов, ни один не работает сам, все они передают запрос на выполнение jet-у (OLE DB), во всяком случае в новых редакциях.
можеш проверить, выполни запрос к несушествующей таблице в том же SQL Explorer-e при подключении к ODBS DSN MS Access Database (или др. аксессовскому/перечисленному). после внимательно читай ошибку которую вернет, будет чтото вроде этого
[Microsoft][Драйвер ODBC Microsoft Access] Ядро базы данных Microsoft Jetне может найти входную таблицу или запрос 'Table1'.  Проверьте существование таблицы или запроса и правильность имени
т.е. ошибка возврашается от того кто на самом деле запрос выполняет... а он точно не понимает тех соглашений про которые ты говориш. вывод - ему ктото подсовывает то что он понимает, параметры в данном случае. посредником является ODBC, значит он. ;)

вот. и тут подходим с другой стороны к тому же самому, зачем чтото преобразовывать подставлять это в специальную форму для того чтобы его "разпреобразовали" назад?
ведь можно это сразу в той форме дать. (в форме числа даты/датытайм) и, ни вам ни этой загадочной ;) ODBC-ине напрягаться не придется. ;о))


DiamondShark   (2005-07-15 18:43:00) [5]


> в этом случае ZStyle OLEDB провайдер, подключен к файрбирд
> 1.5.

А при чём здесь OLEDB провайдер? Мы про ODBC драйвер говорим.
Впрочем, у файрбирда ничего нормально не работает.


> но я так думаю таких большинство... проверять некогда, домой
> иду.

А вот я проверил.
Пакет микрософтовских драйверов (dbf, текстовые, парадокс, эксель)
Аксес
SQL Server
Пакет драйверов INTERSOLV (штук пятьнадцать всяких разных форматов)
Sybase ASA

Всё поддерживается.


sniknik   (2005-07-15 18:23:00) [6]

> Это кто такой? "Имя, сестра! Имя!"
в этом случае ZStyle OLEDB провайдер, подключен к файрбирд 1.5.

но я так думаю таких большинство... проверять некогда, домой иду.


DiamondShark   (2005-07-15 18:20:00) [7]


> а если этот драйвер писал я? (а мне плевать на строковые
> соглашения) ;о))

Поймать, и руки оторвать.


> берем первый (у меня) попавшийся...

Это кто такой? "Имя, сестра! Имя!"
Мы его к позорному столбу.


sniknik   (2005-07-15 17:58:00) [8]

> Чтоб везде, надо использовать ODBC escape sequence
прям сказки на ночь. ;о))

везде... не кажется вам что это слишком много где? ;о)) а если этот драйвер писал я? (а мне плевать на строковые соглашения) ;о))

берем первый (у меня) попавшийся...
делаем запрос
SELECT * FROM TODOS
WHERE SCHEDULED = {d'2001-09-20'}
получаем ответ ;о)
Dynamic SQL Error
SQL error code = -104
Token unknown - line 2, char 22
'2001-09-20'

??? че за фигня? почему ваше "весде" сдесь сбой дало ???
(можно не отвечать. риторический вопрос ;)


DiamondShark   (2005-07-15 17:30:00) [9]


> Если ты про строковое представление даты, то используй ODBC
> canonical
> YYYY-MM-DD
> прокатит везде.

Не везде.

Чтоб везде, надо использовать ODBC escape sequence

{d 'yyyy-mm-dd'}
{t 'hh:mm:ss'}
{ts 'yyyy-mm-dd hh:mm:ss.fff'}


sniknik   (2005-07-15 14:27:00) [10]

> Собсно формат даты нужен для составления запроса.
а чего тогда вопрос такой странный "в обход"? кода требуется вполне конкретное, нисколько не связанное с хранением. (и настолько часто задаваемое, что уже набило оскомину.)
прочитай про параметры... они гораздо универсальнее "универсального ODBC формата". ;) прям здесь на форуме поищи и почитай.


Sam Stone   (2005-07-15 14:03:00) [11]

Собсно формат даты нужен для составления запроса. Просто в одной базе дата лежит ddmmyyyy, в другой mmddyyyy, в третьей еще как-нибудь будет...

> Если ты про строковое представление даты, то используй ODBC
> canonical
> YYYY-MM-DD
> прокатит везде.

щас попробую... Вроде работает, буду тестить на других базах...
Спасибо.


> будет формат произвольной базы. открываеш справку по произвольной
> базе и читаеш...

это, конечно, забавно, но не подходит :) Потому как программа уже будет написана.


evvcom   (2005-07-15 08:25:00) [12]


> Как узнать, в каком формате хранится дата?

Обычно, в числовом. А что собственно интересует?


sniknik   (2005-07-15 00:51:00) [13]

> Другие в целом.
это для тех движков что "чистую" дату позволяют например парадокс, пример был для дататайма. а если взять фокспро/дбасе то строка..., ну да у них там все строки... вот!!! понял про что вопрос,  произвольная база = foxpro/dbase. вот какой формат хранения имеется в виду! ;о)))

> Только наоборот
да, точно. наоборот.
но тогда они сами запутались... в access(фактически в VB) (мелкософт!) CDate(0) дает 30.12.1899 а в mssql (мелкософт!) CAST(0 AS DateTime) 01.01.1900.
получается, меняли - обратно вернули... (???)


Anatoly Podgoretsky   (2005-07-15 00:12:00) [14]

sniknik ©   (14.07.05 23:49) [9]
Только наоборот, Борланд когда внедрял свой формат клялся об совместимости с МС и это мол они виноваты, что им пришлось на него перейти. Но как оказалось он обманывал.


Reindeer Moss Eater   (2005-07-14 23:56:00) [15]

Они в Double.
Другие в целом.

Коннекчусь к произвольной базе через ODBC. Как узнать, в каком формате хранится дата?

Если ты про строковое представление даты, то используй ODBC canonical
YYYY-MM-DD
прокатит везде.


sniknik   (2005-07-14 23:49:00) [16]

нет, это формат распознавания даты... ;о))
что понимают под конкретным числом секунда/месяц/год что обозначается под 0-м (точка отсчета), а хранятся оно одинаково.

например точка отсчета у мелкософта (mssql/access) 0 = 30.12.1899, у борманда 01.01.1900. т.е. понимают они под 0-м разные даты... а вот хранят одинаково в типе double... ноль он ноль и есть. ;)


Reindeer Moss Eater   (2005-07-14 23:17:00) [17]

У числа которое есть дата может быть формат хранения.
И есть.
Например можно хранить его как целое количество секунд.
Можно хранить как плавающую точку и так далее.
Это и есть формат хранения даты.


sniknik   (2005-07-14 23:13:00) [18]

какой может быть формат у числа? целое/дробное вот и весь выбор. ;о))

> Коннекчусь к произвольной базе
будет формат произвольной базы. открываеш справку по произвольной базе и читаеш...


Desdechado   (2005-07-14 23:01:00) [19]

а она в формате хранится?
даже если так, то тебе нужен формат, который тебе драйвер вернет, а также тот, к которому тебе нужно привети перед отображением


DiamondShark   (2005-07-14 21:26:00) [20]


> Коннекчусь к произвольной базе через ODBC. Как узнать, в
> каком формате хранится дата?

А зачем? Всё равно получать ты её будешь в формате, установленным ODBC.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо