Преобразование даты

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

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

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

Преобразование даты

Сообщение cleosveta »

в Галактике дата хранится в числе
я лезу через ODBC сторонним клиентом
мне нужно дату преобразовать в переменную типа дата

не подскажите как это сделать
или какой формат у числовой даты
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Re: Преобразование даты

Сообщение Deinis »

База данных "Вопросы и ответы". Вопрос "Формат даты в условных операторах ТХО".
Для определения "код даты" (количества дней с 01 января 0001 года) в алгоритме используется следующая функция
To_Days(Date(ДД,ММ,ГГГГ)),
где ДД - день, ММ - месяц, ГГГГ - год.
To_Days(Date(01,06,2000)) = 730272
Обратное преобразование
From_Days(730272) = <01/06/2000>
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Преобразование даты

Сообщение Den »

О какой Галке идет речь ? если 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
VIY
Сообщения: 16
Зарегистрирован: 12 сен 2005, 16:22
Откуда: Saratov
Контактная информация:

Сообщение VIY »

Может кто подсказать, как будет выглядеть SQL запрос делающий примерно следующее:
SELECT * FROM "PLPOR" where DATVIP='01.01.2006'
?

Галактика 7.12; PervasiveSQL 2000i.
не получается ни через Pervasive Control Center, ни через ODBC Дельфей7
IgorA
Постоянный обитатель
Сообщения: 192
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Красноярск

Сообщение IgorA »

SELECT * FROM "PLPOR" where DATVIP='2006-01-01'

Сначала месяц, потом день yyyy-mm-dd
Ответить