Date 2 Integer

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

SinDmit
Сообщения: 7
Зарегистрирован: 14 янв 2008, 14:32

Сообщение SinDmit » 15 фев 2008, 10:43

а как на счёт функции Extract? например:
EXTRACT(DAY FROM MyDate)

где, MyDate - поле или переменная типа DATE или TIMESTAMP

функция работает во всех диалектах и позволяте вытащить любую часть из DATE или TIMESTAMP

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 15 фев 2008, 11:12

SinDmit писал(а):функция работает во всех диалектах и позволяте вытащить любую часть из DATE или TIMESTAMP
Вот только обрезать время не позволяет, как в третьем диалекте cast(current_timestamp as date) :(

SinDmit
Сообщения: 7
Зарегистрирован: 14 янв 2008, 14:32

Сообщение SinDmit » 15 фев 2008, 13:35

WildSery писал(а):Вот только обрезать время не позволяет, как в третьем диалекте cast(current_timestamp as date)
дык, я и не писал про обрезание (слово какое-то страшное :?), я писал про то, что можно из даты-времени вытащить любую нужную часть и делать с ними всё что хочешь. При этом не надо заморачиваться про текстовое представление даты-времени.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 15 фев 2008, 14:15

Пятницо в разгаре. У людей уже какие-то эксклюзивные билды FB, во Float таймштамп хранят, время после запятой...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 15 фев 2008, 15:05

я может огорчу автора топика, но date в третьем диалекте - это грубо говоря и есть integer, хранящий количество дней с определенной даты.

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 15 фев 2008, 19:10

Merlin писал(а):Пятницо в разгаре. У людей уже какие-то эксклюзивные билды FB, во Float таймштамп хранят, время после запятой...
Рразница между двумя полями Timestamp с одинаковой датой - вещественное число с нулевой цело частью. С одинаковым временем и разными датами - вещественное число с нулевой дробной частью. Убедиться несложно.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 15 фев 2008, 20:45

вещественное число с нулевой цело частью
вещественное число - да, но не float.
p.s. иногда надо все-таки читать, на что отвечаешь :)

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 15 фев 2008, 20:52

kdv писал(а):
вещественное число с нулевой цело частью
вещественное число - да, но не float.
p.s. иногда надо все-таки читать, на что отвечаешь :)
В контексте разговора это УЖАСНО важно. Нет, я понимаю, спец всегда должен оставаться на высоте, и даже если по делу сказать нечего, надо всё равно что нибудь пи... сказануть, и чем высокомернее, тем лучше... Нда... Float не Float... Речь шла о том что дата в TimeStamp хранится в целой части а время в дробной, и работать благодаря этому с разницей двух полей Timestamp удобно... Ну несколько некорректно написал, и что? Вопрос не упирался в конкретный тип данных в общем-то...

avenger
Сообщения: 141
Зарегистрирован: 25 окт 2005, 11:53

Сообщение avenger » 15 фев 2008, 21:29

kdv писал(а):я может огорчу автора топика, но date в третьем диалекте - это грубо говоря и есть integer, хранящий количество дней с определенной даты.
Я это знаю, и это логично. Жалко, что нельзя сделать cast(date as integer)...

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 15 фев 2008, 21:56

Kotъ-Begemotъ писал(а):дата в TimeStamp хранится в целой части а время в дробной
Гы-гы-гы (С)

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 15 фев 2008, 22:06

Merlin писал(а):
Kotъ-Begemotъ писал(а):дата в TimeStamp хранится в целой части а время в дробной
Гы-гы-гы (С)
Уже выше говорил по поводу деби... неумного юмора. Я не упираю на то, как оно в конкретной реализации ХРАНИТСЯ, я говорю про то, как с этим можно РАБОТАТЬ. А как оно реально хранится, просто пофиг. Я не теоретик. Разница между двумя Timestamp с одинаковым временем - количество дней. С одинаковой датой - количество миллисекунд.

Хотя если поразмышлять... Какова может быть внутренняя реализация типа Timestamp в IB/FB, учтывая, что разность двух Timestamp является вещественным числом с непустыми (в общем случае) целой и дробной частями? И учитывая что разность Timestamp с одинаковым временем имеет нулевую дробную часть, а разность с одинаковой датой - нулевую целую часть?

Конечно мы придём к выводу, что это... VARCHAR! Бу-га-га! :)))

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 16 фев 2008, 11:05

Kotъ-Begemotъ писал(а): Конечно мы придём к выводу, что это... VARCHAR! Бу-га-га! :)))
Я так понял, ты говоришь про реализацию TDateTime в Дельфях, но в FB несколько свой подход, так что не надо обобщать
А знание конкретной реализации часто весьма существенно.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 16 фев 2008, 17:21

Kotъ-Begemotъ писал(а):Уже выше говорил по поводу деби... неумного юмора.
Если этот "неумный юмор" всё чаще ко мне относится - может не такой уж он и "неумный" ?

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 17 фев 2008, 01:37

stix-s писал(а):
Kotъ-Begemotъ писал(а): Конечно мы придём к выводу, что это... VARCHAR! Бу-га-га! :)))
Я так понял, ты говоришь про реализацию TDateTime в Дельфях, но в FB несколько свой подход, так что не надо обобщать
А знание конкретной реализации часто весьма существенно.
Но не в данном случае, думаю. Простейшие запросы это показывают. Я говорю потому что у меня это реально работает, и проверено.

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 17 фев 2008, 01:39

hvlad писал(а):
Kotъ-Begemotъ писал(а):Уже выше говорил по поводу деби... неумного юмора.
Если этот "неумный юмор" всё чаще ко мне относится - может не такой уж он и "неумный" ?
Нет, я говорил не совсем об этом... А если быть точным, совсем не об этом :)))

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 18 фев 2008, 07:07

Kotъ-Begemotъ писал(а):
Но не в данном случае, думаю. Простейшие запросы это показывают. Я говорю потому что у меня это реально работает, и проверено.
http://ibase.ru/v6/doc/datadef.zip
A TIMESTAMP datatype is supported that includes information about year, month, day of
the month, and time. The TIMESTAMP datatype is stored as two long integers, and requires
conversion to and from InterBase when entered or manipulated in a host-language
program.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 18 фев 2008, 13:40

Kotъ-Begemotъ писал(а): Хотя если поразмышлять... Какова может быть внутренняя реализация типа Timestamp в IB/FB, учтывая, что разность двух Timestamp является вещественным числом с непустыми (в общем случае) целой и дробной частями? И учитывая что разность Timestamp с одинаковым временем имеет нулевую дробную часть, а разность с одинаковой датой - нулевую целую часть?

Конечно мы придём к выводу, что это... VARCHAR! Бу-га-га! :)))
Как тебе уже прозрачно намекнули цитаткой из доки, размышлять по поводу базовых знаний не надо, особенно если неважно получается, их надо просто терпеливо и систематически получать читаючи доку. Ты просил не отвечать в твоих темах, если ничего кроме гы-гы-гы на язык не просится - я свято соблюдаю, ибо действительно ничего другого не просится. Но когда ты начинаешь давать советы, кои могут повредить неокрепшему разуму - извини-подвинься, меня не испугают и твои угрозы встретить в подворотне. Так вот, как безусловно известно просвещённой аудитории, не любое вещественное число может быть точно представлено на ограниченной разрядкой сетке. Отсюда следует, что преобразование целочисленное-плавающее и обратно в общем случае не зеркально. К таким относится, в частности, преобразование 2х-интового таймштампа IB/FB в плавающий большинства клиентских сред разработки. Отсюда следует, что при прогоне оного таймштампа через клиента даже обращаться с ним на равенство обратно в базу рискованно, не говоря уже о дальнейших преобразованиях. А отсюда, в частности, следует
а) Использование таймштампа в качестве ПК - путь граблей
б) Самым надёжным форматом для сеансовой репликации между двумя .fdb является формат .fdb - не будет проблем ни с таймштапами, ни с даблами, ни с блобами.

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 18 фев 2008, 16:48

Самым надёжным форматом для сеансовой репликации между двумя .fdb является формат .fdb - не будет проблем ни с таймштапами, ни с даблами, ни с блобами.
ну так ведь переливаться между ДБ данные будут через клиента а значит с конвертацией туда и обратно. значит это уже не так, вот когда птичку сама сможет перелить из одной бд в другую тогда да.

а сейчас получается самым надежным форматом внешнии таблицы. :roll:

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 18 фев 2008, 17:29

Attid писал(а):
Самым надёжным форматом для сеансовой репликации между двумя .fdb является формат .fdb - не будет проблем ни с таймштапами, ни с даблами, ни с блобами.
ну так ведь переливаться между ДБ данные будут через клиента а значит с конвертацией туда и обратно. значит это уже не так
Если проигнорировать пункт а) насчёт таймштампа в качестве ПК, да, не так. И это не единственные его грабли, кстати. Других вариантов когда нужна идентичность таймштампа с точностью до миллисекунд, для условий равенства, я не знаю. Дабл клиент не калечит, представление одинаковое.
Attid писал(а): а сейчас получается самым надежным форматом внешнии таблицы. :roll:
Ты их видел с блобами?

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 18 фев 2008, 18:29

Собственно, не только ПК.
Я вот нос разбил об сравнение на "изменённость" документа, когда на 2-ку перелазить стал. Дельфёвый TDateTime милисекунд не содержит, а потому никогда не равен считанному...

Ответить