в Галактике дата хранится в числе
я лезу через ODBC сторонним клиентом
мне нужно дату преобразовать в переменную типа дата
не подскажите как это сделать
или какой формат у числовой даты
Преобразование даты
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Преобразование даты
База данных "Вопросы и ответы". Вопрос "Формат даты в условных операторах ТХО".
Для определения "код даты" (количества дней с 01 января 0001 года) в алгоритме используется следующая функция
To_Days(Date(ДД,ММ,ГГГГ)),
где ДД - день, ММ - месяц, ГГГГ - год.
To_Days(Date(01,06,2000)) = 730272
Обратное преобразование
From_Days(730272) = <01/06/2000>
Для определения "код даты" (количества дней с 01 января 0001 года) в алгоритме используется следующая функция
To_Days(Date(ДД,ММ,ГГГГ)),
где ДД - день, ММ - месяц, ГГГГ - год.
To_Days(Date(01,06,2000)) = 730272
Обратное преобразование
From_Days(730272) = <01/06/2000>
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Преобразование даты
О какой Галке идет речь ? если BTRIEVE, то вроде как (тип данных date) :
самый младший - день
постарше - месяц
3-й - год
4-й - год
если MSSQl то там дата в инте хранится.Преобразовать можно вот так :
CREATE Function IntToDate (@Date As Int) Returns DateTime
As
Begin
Declare @Res DateTime
Declare @CYear Char(4), @CMonth Char(2), @CDay Char(2), @CDate VarChar(8)
Declare @IYear Int, @IMonth Int, @IDay Int
--год
Set @IYear=Cast(Ceiling(@Date/65536) As Int)
Set @CYear=Right(Cast(@IYear As VarChar(4)),4)
Set @Date=@Date-(@IYear*65536)
--месяц
Set @IMonth=Cast(Ceiling(@Date/256) As Int)
Set @CMonth=Right('00'+Cast(@IMonth As VarChar(2)), 2)
Set @Date=@Date-(@IMonth*256)
--день
Set @IDay=Cast(Ceiling(@Date) As Int)
Set @CDay=Right('00'+Cast(@IDay As VarChar(2)), 2)
--дата полностью
if (@CYear=0)or(@CMonth=0)or(@CDay=0)
Set @CDate=Null
else
Set @CDate=@CYear+@CMonth+@CDay
Set @Res=Cast(@CDate As DateTime)
Return @Res
End
самый младший - день
постарше - месяц
3-й - год
4-й - год
если MSSQl то там дата в инте хранится.Преобразовать можно вот так :
CREATE Function IntToDate (@Date As Int) Returns DateTime
As
Begin
Declare @Res DateTime
Declare @CYear Char(4), @CMonth Char(2), @CDay Char(2), @CDate VarChar(8)
Declare @IYear Int, @IMonth Int, @IDay Int
--год
Set @IYear=Cast(Ceiling(@Date/65536) As Int)
Set @CYear=Right(Cast(@IYear As VarChar(4)),4)
Set @Date=@Date-(@IYear*65536)
--месяц
Set @IMonth=Cast(Ceiling(@Date/256) As Int)
Set @CMonth=Right('00'+Cast(@IMonth As VarChar(2)), 2)
Set @Date=@Date-(@IMonth*256)
--день
Set @IDay=Cast(Ceiling(@Date) As Int)
Set @CDay=Right('00'+Cast(@IDay As VarChar(2)), 2)
--дата полностью
if (@CYear=0)or(@CMonth=0)or(@CDay=0)
Set @CDate=Null
else
Set @CDate=@CYear+@CMonth+@CDay
Set @Res=Cast(@CDate As DateTime)
Return @Res
End