SQL 2000.
Подключился через ODBC к таблице T$katsopr.
Прочитал таблицу, в полях где дата стоят десятичные цифры и много, а как преобразовать их в нормальную дату и обратно?
Подскажите
ODBC
Модераторы: m0p3e, edward_K, Модераторы
Re: ODBC
Для таких вещей у меня в базе Master лежит вот такая функция:
create function uf_inttodatetime (
@galdate int, -- значение даты
@galtime int) -- значение времени
returns datetime
as
begin
return CONVERT(datetime, CASE WHEN @galdate=0 OR @galdate is NULL THEN NULL ELSE REPLACE(STR((@galdate&0xFFFF0000)/65536,4)+STR((@galdate&0x0000FF00)/256,2)+STR(@galdate&0x000000FF,2),' ','0') END + ' ' + CASE WHEN @galtime=0 OR @galtime is NULL THEN '' ELSE REPLACE(STR((@galtime&0xFF000000)/16777216,2)+':'+STR((@galtime&0x00FF0000)/65536,2)+':'+STR((@galtime&0x0000FF00)/256,2)+'.'+STR(@galtime&0x000000FF,2),' ','0') END)
end
create function uf_inttodatetime (
@galdate int, -- значение даты
@galtime int) -- значение времени
returns datetime
as
begin
return CONVERT(datetime, CASE WHEN @galdate=0 OR @galdate is NULL THEN NULL ELSE REPLACE(STR((@galdate&0xFFFF0000)/65536,4)+STR((@galdate&0x0000FF00)/256,2)+STR(@galdate&0x000000FF,2),' ','0') END + ' ' + CASE WHEN @galtime=0 OR @galtime is NULL THEN '' ELSE REPLACE(STR((@galtime&0xFF000000)/16777216,2)+':'+STR((@galtime&0x00FF0000)/65536,2)+':'+STR((@galtime&0x0000FF00)/256,2)+'.'+STR(@galtime&0x000000FF,2),' ','0') END)
end
Re: ODBC
У меня вот такая функция:
CREATE FUNCTION [dbo].[cs$int2date](@i [int])
RETURNS [datetime] AS
BEGIN
declare @y int, @m int, @d int
set @y=CEILING (@i/(256*256))
set @m=CEILING ((@i-@y*256*256)/256)
set @d=@i-@y*256*256-@m*256
RETURN
dateadd(dd,@d-DAY(0),
dateadd(mm,@m-MONTH(0),
dateadd(yy,@y-YEAR(0),0)
)
)
END
CREATE FUNCTION [dbo].[cs$int2date](@i [int])
RETURNS [datetime] AS
BEGIN
declare @y int, @m int, @d int
set @y=CEILING (@i/(256*256))
set @m=CEILING ((@i-@y*256*256)/256)
set @d=@i-@y*256*256-@m*256
RETURN
dateadd(dd,@d-DAY(0),
dateadd(mm,@m-MONTH(0),
dateadd(yy,@y-YEAR(0),0)
)
)
END