Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 binary to datetime trouble  [new]
XpaHuteJlb
Member

Откуда:
Сообщений: 4
В бд датавремя хранится в формате binary например
0x87DE0C0F01340000 = 15/12/2014 01:52

0x8
далее
3 знака это год
2 знака месяц
2 знака день
2 знака час
2 знака минута

7DE = 2014
0C = 12
0F = 15
01 = 1
34 = 52

Собственно вопрос как распилить этот бинари на такие куски?
2 июн 14, 09:43    [16104294]     Ответить | Цитировать Сообщить модератору
 Re: binary to datetime trouble  [new]
TempFox
Guest
select YourColumn & 0x001100 from YourTable
2 июн 14, 09:51    [16104309]     Ответить | Цитировать Сообщить модератору
 Re: binary to datetime trouble  [new]
TempFox
Guest
begin
  declare @a bigint;
  set @a = 0x87DE0C0F01340000;
  select @a, @a & 0x07DE000000000000, (@a & 0x07DE000000000000) / 0x1000000000000;
end;
2 июн 14, 10:04    [16104350]     Ответить | Цитировать Сообщить модератору
 Re: binary to datetime trouble  [new]
XpaHuteJlb
Member

Откуда:
Сообщений: 4
TempFox
select YourColumn & 0x001100 from YourTable


идею понял...

Declare 
@bin binary 

begin
set @bin= 0x87D90C1F173B0000 &  0x0111000000000000
end


Типы данных varbinary и varbinary в операторе '&' несовместимы.
2 июн 14, 10:07    [16104353]     Ответить | Цитировать Сообщить модератору
 Re: binary to datetime trouble  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
XpaHuteJlb
Собственно вопрос как распилить этот бинари на такие куски?
substring
2 июн 14, 10:07    [16104355]     Ответить | Цитировать Сообщить модератору
 Re: binary to datetime trouble  [new]
XpaHuteJlb
Member

Откуда:
Сообщений: 4
invm
XpaHuteJlb
Собственно вопрос как распилить этот бинари на такие куски?
substring


если бы substring,left,right помогли - я бы сюда не писал бы...
2 июн 14, 10:29    [16104430]     Ответить | Цитировать Сообщить модератору
 Re: binary to datetime trouble  [new]
aleks2
Guest
XpaHuteJlb
invm
пропущено...
substring


если бы substring,left,right помогли - я бы сюда не писал бы...

Чукчи они такие писатели...

declare @x binary(8) = 0x87DE0C0F01340000

select substring(@x ,3, 1) [2 знака], cast(substring(@x ,3, 1) as int) [месяц]
2 июн 14, 10:38    [16104477]     Ответить | Цитировать Сообщить модератору
 Re: binary to datetime trouble  [new]
TempFox
Guest
Извините, моя идея что-то не работает...
2 июн 14, 10:39    [16104480]     Ответить | Цитировать Сообщить модератору
 Re: binary to datetime trouble  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
XpaHuteJlb
если бы substring,left,right помогли - я бы сюда не писал бы...
Мда...
declare @b binary(8) = 0x87DE0C0F01340000;

select
 cast(substring(@b, 1, 2) as int) & 0x0FFF,
 cast(substring(@b, 3, 1) as int),
 cast(substring(@b, 4, 1) as int),
 cast(substring(@b, 5, 1) as int),
 cast(substring(@b, 6, 1) as int);
2 июн 14, 10:48    [16104537]     Ответить | Цитировать Сообщить модератору
 Re: binary to datetime trouble  [new]
TempFox
Guest
У меня получилось благодаря aleks2:
begin
  declare @x binary(8);
  set @x = 0x87DE0C0F01340000;

  select cast(substring(@x, 1, 2) as int) - 32768 [год],
    cast(substring(@x, 3, 1) as int) [месяц],
    cast(substring(@x, 4, 1) as int) [день],
    cast(substring(@x, 5, 1) as int) [час],
    cast(substring(@x, 6, 1) as int) [минута];
end;
2 июн 14, 10:49    [16104541]     Ответить | Цитировать Сообщить модератору
 Re: binary to datetime trouble  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
aleks2
declare @x binary(8) = 0x87DE0C0F01340000

select substring(@x ,3, 1) [2 знака], cast(substring(@x ,3, 1) as int) [месяц]
declare @x binary(8) = 0x87DE0C0F01340000

select
 substring(@x,1,2),cast(substring(@x ,1, 2) as int)&0xFFF [Год]
,substring(@x,3,1),cast(substring(@x ,3, 1) as int)[месяц]
,substring(@x,4,1),cast(substring(@x ,4, 1) as int)[день]
,substring(@x,5,1),cast(substring(@x ,5, 1) as int)[час]
,substring(@x,6,1),cast(substring(@x ,6, 1) as int)[минута];
2 июн 14, 10:53    [16104565]     Ответить | Цитировать Сообщить модератору
 Re: binary to datetime trouble  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Опоздал...
2 июн 14, 10:53    [16104569]     Ответить | Цитировать Сообщить модератору
 Re: binary to datetime trouble  [new]
XpaHuteJlb
Member

Откуда:
Сообщений: 4
invm
XpaHuteJlb
если бы substring,left,right помогли - я бы сюда не писал бы...
Мда...
declare @b binary(8) = 0x87DE0C0F01340000;

select
 cast(substring(@b, 1, 2) as int) & 0x0FFF,
 cast(substring(@b, 3, 1) as int),
 cast(substring(@b, 4, 1) as int),
 cast(substring(@b, 5, 1) as int),
 cast(substring(@b, 6, 1) as int);


Спс бро!

Тему Close
2 июн 14, 10:54    [16104574]     Ответить | Цитировать Сообщить модератору
 Re: binary to datetime trouble  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
XpaHuteJlb
В бд датавремя хранится в формате binary например
0x87DE0C0F01340000 = 15/12/2014 01:52

0x8
далее
3 знака это год
2 знака месяц
2 знака день
2 знака час
2 знака минута

7DE = 2014
0C = 12
0F = 15
01 = 1
34 = 52

Собственно вопрос как распилить этот бинари на такие куски?
На дворе 21й век, а бессмысленные ласапеды всё клепают.
Бандерлоги.

XpaHuteJlb, где это вам так не повезло?
Или ссесия?
3 июн 14, 01:23    [16109959]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить