Не знаю как преобразовать тип

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

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

Ответить
_Alexander_
Сообщения: 5
Зарегистрирован: 19 апр 2005, 14:25

Не знаю как преобразовать тип

Сообщение _Alexander_ » 19 апр 2005, 17:36

Всем привет! Подскажите плз новичку в FireBird как подбить сумму по полю типа TimeStamp. В TSQL нужное мне выглядит так:

select Sum(cast(Duration as float)) from ...

где Duration типа DateTime.

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

Сообщение Merlin » 19 апр 2005, 17:40

17 марта 2004 + 18 октября 2005 = 35 мартобря 4009?

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

Сообщение kdv » 19 апр 2005, 18:17

да еще к тому же float - 4 байта.

eugeney
Сообщения: 79
Зарегистрирован: 29 окт 2004, 18:51

Сообщение eugeney » 20 апр 2005, 10:45

Merlin писал(а):17 марта 2004 + 18 октября 2005 = 35 мартобря 4009?
Не обязательно может он дни и часы складывает а не даты :)

_Alexander_
Сообщения: 5
Зарегистрирован: 19 апр 2005, 14:25

Сообщение _Alexander_ » 20 апр 2005, 15:46

И все же как? Логика в моих действиях присутствует: я перекачиваю данные из FireBird в MSSQL и хотелось-бы проверить достоверность перенесенных данных. Пусть это будет абстрактное чило но мне его нада сравнить.

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

Сообщение kdv » 20 апр 2005, 15:56

datetime не может храниться в float. или float в tsql это на самом деле double precision. Кроме того, такой агрегат должен переполниться при сколь-нибудь разумном числе записей. Достоверность проще проверить через select count и визуальным сравнением хотя бы части данных. Правда, я не совсем понимаю, что значит "достоверность перенесения"...

_Alexander_
Сообщения: 5
Зарегистрирован: 19 апр 2005, 14:25

Сообщение _Alexander_ » 20 апр 2005, 17:04

Данные из одной базы в другую переносятся порциями с некоторыми преобзразованиями. Пока этот процесс не отладиться хотелось бы его контролировать. Один из параметров действительно общее кол-во строк, но этого мало...
А можна взять от TimeStamp секунды и сложить их? Тоже приемлемо...

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

Сообщение Merlin » 20 апр 2005, 18:05

Код: Выделить всё


1          6
3          2
7          2
4          5
___________SUM

15       15
Ы? Может лучше про CRC чего-нить почитать?

_Alexander_
Сообщения: 5
Зарегистрирован: 19 апр 2005, 14:25

Сообщение _Alexander_ » 20 апр 2005, 18:25

В общем случае неправильный подход, согласен. Но если учесть что переливаемые порции примерно в четверть миллиона записей то вероятность совпадения ничтожна.
Так все-таки, можна выделить секунды? Если есть ссылка на хелп с функциями по преобразованию типов, по работе с Датой-Временем, дайте плз.

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

Сообщение Merlin » 20 апр 2005, 18:49

Да божа ж мой, возьми свои грабли:

Select Sum(YourDate-'21.09.1954') From YourTable

в третьем диалекте, возможно, ещё можно, если тебя интересует именно время, повычитать из таймштампа его же cast as date, но не уверен, живу на первом. А насчёт вероятности совпадения сумм на длинных рядах - это тебя тоже не доучили, как и насчёт CRC.

_Alexander_
Сообщения: 5
Зарегистрирован: 19 апр 2005, 14:25

Сообщение _Alexander_ » 21 апр 2005, 12:19

2Merlin: за грабли огромное Спасибо.
Коментарии по поводу "недоучили" игнорирую :wink:

Ответить