Страница 1 из 1

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

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

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

где Duration типа DateTime.

Добавлено: 19 апр 2005, 17:40
Merlin
17 марта 2004 + 18 октября 2005 = 35 мартобря 4009?

Добавлено: 19 апр 2005, 18:17
kdv
да еще к тому же float - 4 байта.

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

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

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

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

Добавлено: 20 апр 2005, 18:05
Merlin

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


1          6
3          2
7          2
4          5
___________SUM

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

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

Добавлено: 20 апр 2005, 18:49
Merlin
Да божа ж мой, возьми свои грабли:

Select Sum(YourDate-'21.09.1954') From YourTable

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

Добавлено: 21 апр 2005, 12:19
_Alexander_
2Merlin: за грабли огромное Спасибо.
Коментарии по поводу "недоучили" игнорирую :wink: