дата в MS SQL

Администрирование баз данных (Pervasive.SQL, MS SQL, Oracle, утилита Support)

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

Ответить
knat
Постоянный гость
Сообщения: 57
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Украина, Донецк ОАУК
Контактная информация:

дата в MS SQL

Сообщение knat »

Народ, кто знает
в каком формате в поле Integer хранятся даты?

Подскажите, плз. ???
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: дата в MS SQL

Сообщение Den »

knat
Постоянный гость
Сообщения: 57
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Украина, Донецк ОАУК
Контактная информация:

Re: дата в MS SQL

Сообщение knat »

Спасибо, Den.
Круто, конечно... А мы искали легких путей.
Если все так лихо закручено, значит это кому-нибудь нужно... Любопытно, кому. Хотелось бы знать, за какую идею страдаем. ;)
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: дата в MS SQL

Сообщение Den »

А ничего такого особого в это нет. Делов том, что, по всей видимости, это сложилось исторически. Изначально Г разрабатывалась под Битрив. А там дата хранится также : два байта-год, байт-месяц, байт -день. Поэтому в MSSQL галактисты и выбрали для хранения дат INTEGER .Драйвер к тому же переписывать не нужно.
А в чем у Вас трудность ?
igornov
Постоянный гость
Сообщения: 70
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Украина ИВЦ при Ингулецком ГОКе
Контактная информация:

Re: дата в MS SQL

Сообщение igornov »

Ну я чуть попроще функцию юзаю:

CREATE FUNCTION dbo.galdate_d (@galdat_ int)
RETURNS datetime AS
BEGIN
declare @gal_dat2 nchar(10),
@i int,
@prom nchar(10)
set @gal_dat2=str(convert(int,substring(convert(binary(4),@galdat_),4,1)),2)+'/'+str(convert(int,substring(convert(binary(4),@galdat_),3,1)),2)+'/'+str(convert(int,substring(convert(binary(4),@galdat_),1,2)),4)
select @i=1,@prom=''
while @i<=len(@gal_dat2)
begin
if substring(@gal_dat2,@i,1)=' '
select @prom=rtrim(ltrim(@prom))+'0'
else
select @prom=rtrim(ltrim(@prom))+substring(@gal_dat2,@i,1)

select @i=@i+1
end

return convert(datetime,@prom)
END
igornov
Постоянный гость
Сообщения: 70
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Украина ИВЦ при Ингулецком ГОКе
Контактная информация:

Re: дата в MS SQL

Сообщение igornov »

Кому нужно могу и обратную опублтковать в том числе и для времени.
Darikon
Постоянный обитатель
Сообщения: 188
Зарегистрирован: 17 июн 2008, 17:07
Откуда: Москва
Контактная информация:

Re: дата в MS SQL

Сообщение Darikon »

igornov писал(а):Кому нужно могу и обратную опублтковать в том числе и для времени.
если есть возможность, для времени, было бы очень хорошо..
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: дата в MS SQL

Сообщение Masygreen »

собственно старт...

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

SET @SALDO = CONVERT (DATETIME, '01/07/2007', 103)
SET @SALDOI = year (@SALDO) * 256 * 256 + 256 * month (@SALDO) + day (@SALDO)
Время ведет!
Ответить