Страница 1 из 1
ХП DateTime(float) в TimeStamp
Добавлено: 06 фев 2007, 14:51
Leons
Перерыл много чего, потерял время но так и не откапал... Как можно преобразовать в ХП DateTime(float) в TimeStamp?
Добавлено: 06 фев 2007, 15:14
Dimitry Sibiryakov
Прибавить к какому-то другому тимештампу. А откуда ты его такого, плавающего, берешь? Может, проще преобразовать еще "на пути" в ХП?..
Добавлено: 06 фев 2007, 15:27
Leons
Прежний разработчик БД все даты хранит в DOUBLE PRECISION.
Надо данные перенести из одной TABLE с датой в формате DOUBLE PRECISION в другую, где дата хранится именно в TimeStamp
Добавлено: 06 фев 2007, 15:37
Merlin
Leons писал(а):Прежний разработчик БД все даты хранит в DOUBLE PRECISION.
В смысле, хранил? Надеюсь, его уже повесили?
Добавлено: 06 фев 2007, 15:38
WildSery
1. Выяснить точку отсчёта - т.е. какой датой является 0.0. Предположим, это '01.01.1600' (абсолютно не важно).
2. К этой дате прибавляем double, как
Код: Выделить всё
CAST('01.01.1600' as timestamp) + DoubleFieldDate
Добавлено: 06 фев 2007, 15:50
Leons
Вот что я откапал. Так он по ходу дела и преобразовывал дату в непойми что...
Код: Выделить всё
CREATE PROCEDURE GET_TIMESTAMPASFLOAT (
DATETIME TIMESTAMP)
RETURNS (
RESULT DOUBLE PRECISION)
AS
DECLARE VARIABLE D DATE;
DECLARE VARIABLE T TIME;
begin
d=datetime;
t=datetime;
result=cast((t-cast('0:00:00' as time)) as float)/86400;
result=cast((d-cast('30.12.1899' as date)) as integer)+result;
suspend;
end^
Обратно пытался переконвертить - постоянные ошибки. Пока что не очень дружу с ХП
Добавлено: 06 фев 2007, 16:08
WildSery
Значит, ПравильнаяДата = cast('30.12.1899' as timestamp) + result
И никаких ХП тут не надо.
Добавлено: 06 фев 2007, 16:13
Leons
Я тут такух ХП нагородил, а оказывается одной строчкой все можно сделать!
