ODBC

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

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

Ответить
maikl
Местный житель
Сообщения: 1503
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Тверь

ODBC

Сообщение maikl »

SQL 2000.
Подключился через ODBC к таблице T$katsopr.
Прочитал таблицу, в полях где дата стоят десятичные цифры и много, а как преобразовать их в нормальную дату и обратно?
Подскажите
WiRuc
Местный житель
Сообщения: 414
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж

Re: ODBC

Сообщение WiRuc »

Для таких вещей у меня в базе 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
dkms
Постоянный гость
Сообщения: 60
Зарегистрирован: 29 мар 2005, 17:49

Re: ODBC

Сообщение dkms »

У меня вот такая функция:

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
Ответить