Шифрование даты базе галактики.

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Alexey
Сообщения: 9
Зарегистрирован: 08 фев 2006, 13:26
Откуда: Прокопьевск

Шифрование даты базе галактики.

Сообщение Alexey »

Объясните мне, как в Галактике шифруется дата ?
Выгружаю данные скриптом и сталкиваюсь с проблемой, что дата - целое число (9 знаков) :? .
Может кто знает алгоритм?
homak
Постоянный обитатель
Сообщения: 144
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Красноярский Край
Контактная информация:

Сообщение homak »

в какой формат данных выгружаете ?
san
Местный житель
Сообщения: 412
Зарегистрирован: 28 апр 2005, 11:34
Откуда: Галактика Млечный Путь

Сообщение san »

в шестнадцатиричный вид переведи сразу поймешь
WiRuc
Местный житель
Сообщения: 414
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж

Сообщение WiRuc »

Функции на T-SQL для преобразования даты в формат Галактики и обратно.

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

-- Функция конвертации INT в DATETIME
CREATE FUNCTION uf_inttodate (@galdate int)
RETURNS datetime
with schemabinding
AS
BEGIN 
-- CAST(0 as datetime) возвращает 01-01-1900, поэтому собираем дату относительно 1900
RETURN (CASE WHEN @galdate=0 OR @galdate is NULL THEN NULL ELSE DATEADD(dd,@galdate&0x000000FF-1,DATEADD(mm,(@galdate&0x0000FF00)/256-1,DATEADD(yy,(@galdate&0xFFFF0000)/65536-1900,CAST(0 as datetime)))) END) 
END

-- Функция конвертации DATETIME в INT
CREATE FUNCTION uf_datetoint (@curDT datetime)
RETURNS galdate 
with schemabinding
AS  
BEGIN 
RETURN (CASE WHEN @curDT IS NULL THEN 0 ELSE DATEPART(YY,@curDT)*65536+DATEPART(MM,@curDT)*256+DATEPART(DD, @curDT) END)
END
Alexey
Сообщения: 9
Зарегистрирован: 08 фев 2006, 13:26
Откуда: Прокопьевск

Сообщение Alexey »

Спасибо! :grin:
FynjyWelt
Сообщения: 2
Зарегистрирован: 08 дек 2014, 17:10

Re:

Сообщение FynjyWelt »

WiRuc писал(а):Функции на T-SQL для преобразования даты в формат Галактики и обратно.

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

-- Функция конвертации INT в DATETIME
CREATE FUNCTION uf_inttodate (@galdate int)
RETURNS datetime
with schemabinding
AS
BEGIN 
-- CAST(0 as datetime) возвращает 01-01-1900, поэтому собираем дату относительно 1900
RETURN (CASE WHEN @galdate=0 OR @galdate is NULL THEN NULL ELSE DATEADD(dd,@galdate&0x000000FF-1,DATEADD(mm,(@galdate&0x0000FF00)/256-1,DATEADD(yy,(@galdate&0xFFFF0000)/65536-1900,CAST(0 as datetime)))) END) 
END

-- Функция конвертации DATETIME в INT
CREATE FUNCTION uf_datetoint (@curDT datetime)
RETURNS galdate 
with schemabinding
AS  
BEGIN 
RETURN (CASE WHEN @curDT IS NULL THEN 0 ELSE DATEPART(YY,@curDT)*65536+DATEPART(MM,@curDT)*256+DATEPART(DD, @curDT) END)
END
Подскажите, пожалуйста, как преобразовать если в datetime содержится дата и время? Заранее спасибо.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Шифрование даты базе галактики.

Сообщение Den »

В Бд посмотрите там есть функции

dbo.toMsDateTime
dbo.ToAtlDateTime
FynjyWelt
Сообщения: 2
Зарегистрирован: 08 дек 2014, 17:10

Re: Шифрование даты базе галактики.

Сообщение FynjyWelt »

Den писал(а):В Бд посмотрите там есть функции

dbo.toMsDateTime
dbo.ToAtlDateTime
Спасибо!
Ответить