Переброска данных из PostgreSQL в MS SQL

fem
Дата: 22.06.2004 05:59:32
Добрые люди, помогите, пожалуйста, сами мы не местные, PostgreSQL в глаза не видали :-(
У нас на MS SQL есть некая большая система сбора технологических данных предприятия. Есть там, в частности, такая таблица:
tDate - дата
tHour - час
ID_CtrlPoint - ID контрольной точки (по которой снимаются показания)
fValueP - давление
fValueT - температура
fValueP - расход.

Тут понадобилось добавлять в нашу систему данные другого предприятия, у них эти данные в PostgreSQL в виде:
t_Date - дата в формате UNIX? - как мне сказали, в секундах с 01.01.1970, - 7 часов, +1 час для летнего времени %-/
p_cp1 - давление 1 контрольной точки
t_cp1 - температура 1 контрольной точки
q_cp1 - расход 1 контрольной точки
p_cp1 - давление 2 контрольной точки
.... ну и так далее

Ну, с широкой таблицей ладно, сделаю n запросов для каждой контрольной точки, тем более, что их немного. А с датой как быть? Я данные на MS SQL с помощью DTS буду вытаскивать, помогите с запросом, плиз. Да, еще - данные надо вытаскивать каждый день за прошлые сутки. Ну, в принципе, если подскажете, как дату преобразовать, условие я, НАВЕРНОЕ, смогу добавить.
wbear
Дата: 22.06.2004 11:04:20
в постгресе есть функция extract работает так
extract('epoch' from '2004-06-21'::timestamp with time zone);
возвратит 1087761600 (сек. с 1970.01.01 00:00:00)
(подробнее в доках по посгресу на www.postgres.org )
в mssql
select ((cast(my_datetime_field as int)- 25567) *(60*60*24)) - 60*60*4

25567 - магическое число :) (количество дней c 1900.01.01 до 1970.01.01)
60*60*4 - типа time zone

p.s на всякий случай : exel неправильно считает количество дней с 1900 года так что через excel не проверяй.
fem
Дата: 23.06.2004 07:46:38
Состряпала такой вот запрос:

select 'epoch'::timestamp + (tvgs_date-28800 || ' seconds')::interval as tvgs_date_human, <Список полей>
from merz
WHERE'epoch'::timestamp + (tvgs_date-28800 || ' seconds')::interval>='yesterday'::timestamp 
AND 'epoch'::timestamp + (tvgs_date-28800 || ' seconds')::interval<=current_date + '0:0:0'::time
ORDER BY 1 DESC

Не очень по уродски? Я имею в виду оператор WHERE... И еще - вроде сейчас правильно отрабатывает, а что будет, когда на зимнее время перейдем? :-) (Часовой пояс у нас GMT +7)