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

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

Добавлено: 21 мар 2006, 12:18
Alexey
Объясните мне, как в Галактике шифруется дата ?
Выгружаю данные скриптом и сталкиваюсь с проблемой, что дата - целое число (9 знаков) :? .
Может кто знает алгоритм?

Добавлено: 21 мар 2006, 12:49
homak
в какой формат данных выгружаете ?

Добавлено: 21 мар 2006, 13:05
san
в шестнадцатиричный вид переведи сразу поймешь

Добавлено: 21 мар 2006, 13:37
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

Добавлено: 22 мар 2006, 08:47
Alexey
Спасибо! :grin:

Re:

Добавлено: 22 дек 2014, 12:42
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 содержится дата и время? Заранее спасибо.

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

Добавлено: 22 дек 2014, 13:13
Den
В Бд посмотрите там есть функции

dbo.toMsDateTime
dbo.ToAtlDateTime

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

Добавлено: 23 дек 2014, 11:12
FynjyWelt
Den писал(а):В Бд посмотрите там есть функции

dbo.toMsDateTime
dbo.ToAtlDateTime
Спасибо!