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

Отобразить дату

Добавлено: 10 апр 2007, 11:17
morrex
Помогите пожалуйста разобраться с представлением даты в таблицах галактики - как число 131467035 преобразовать в читабельный дд.мм.гггг? (необходимо для прямого доступа к таблице mssql во внешнем приложении)

Добавлено: 10 апр 2007, 11:55
aleks1232321
Так предлагает ТП (Москва)

Преобразование даты и времени для Галактики под MS SQL | 27.III.2002 @ 12:14 | sniper
внешними средствами можно использовать данные процедуры:

create proc TO_ATLDATE
@lastdate varchar(10)
as
select CONVERT(INT,
SUBSTRING(CONVERT(BINARY(2),DATEPART(YY,@lastdate)),1,1)+
SUBSTRING(CONVERT(BINARY(2),DATEPART(YY,@lastdate)),2,1)+
CONVERT(BINARY(1),DATEPART(MM,@lastdate))+
CONVERT(BINARY(1),DATEPART(DD,@lastdate)))

create proc TO_SQLDATE
@lastdate int
as
declare @datedisplay char(23)
set @datedisplay = convert(datetime,
convert(char(4),convert(int,SUBSTRING(CONVERT(BINARY(4),@lastdate),1,2)))+'-'+
rtrim(convert(char(2),convert(int,SUBSTRING(CONVERT(BINARY(4),@lastdate),3,1))))+'-'+
rtrim(convert(char(2),convert(int,SUBSTRING(CONVERT(BINARY(4),@lastdate),4,1)))))
select rtrim(convert(char(2),DATEPART(DD,@datedisplay)))+'-'+
rtrim(convert(char(2),DATEPART(MM,@datedisplay)))+'-'+
convert(char(4),DATEPART(YYYY,@datedisplay))

create proc TO_ATLTIME
@lasttime varchar(10)
as
Select CONVERT(INT,
CONVERT(BINARY(1),DATEPART(HH,@lasttime))+
CONVERT(BINARY(1),DATEPART(MI,@lasttime))+
CONVERT(BINARY(1),DATEPART(SS,@lasttime))+
CONVERT(BINARY(1),DATEPART(MS,@lasttime)/10))

alter proc TO_SQLTIME
@lasttime int
as
declare @timedisplay char(23)
set @timedisplay = convert(datetime,
convert(char(2),convert(int,SUBSTRING(CONVERT(BINARY(4),@lasttime),1,1)))+':'+
convert(char(2),convert(int,SUBSTRING(CONVERT(BINARY(4),@lasttime),2,1)))+':'+
convert(char(2),convert(int,SUBSTRING(CONVERT(BINARY(4),@lasttime),3,1)))+':'+
convert(char(2),convert(int,SUBSTRING(CONVERT(BINARY(4),@lasttime),4,1))) ,114)
select rtrim(convert(char(2),DATEPART(HH,@timedisplay)))+':'+
rtrim(convert(char(2),DATEPART(MI,@timedisplay)))+':'+
rtrim(convert(char(2),DATEPART(SS,@timedisplay)))+':'+
rtrim(convert(char(2),DATEPART(MS,@timedisplay)))

Добавлено: 10 апр 2007, 12:11
Den
Дату Галактисты хранят в MSSQL-ом варианте в INT-е
4 байта : 1 -день
1 -месяц
2 -год