Шифрование даты базе галактики.
Модераторы: m0p3e, edward_K, Модераторы
Шифрование даты базе галактики.
Объясните мне, как в Галактике шифруется дата ?
Выгружаю данные скриптом и сталкиваюсь с проблемой, что дата - целое число (9 знаков) .
Может кто знает алгоритм?
Выгружаю данные скриптом и сталкиваюсь с проблемой, что дата - целое число (9 знаков) .
Может кто знает алгоритм?
Функции на 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
Re:
Подскажите, пожалуйста, как преобразовать если в datetime содержится дата и время? Заранее спасибо.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
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Шифрование даты базе галактики.
В Бд посмотрите там есть функции
dbo.toMsDateTime
dbo.ToAtlDateTime
dbo.toMsDateTime
dbo.ToAtlDateTime
Re: Шифрование даты базе галактики.
Спасибо!Den писал(а):В Бд посмотрите там есть функции
dbo.toMsDateTime
dbo.ToAtlDateTime