Страница 1 из 1
					
				Преобразование даты
				Добавлено: 12 мар 2004, 13:01
				 cleosveta
				в Галактике дата хранится в числе
я лезу через ODBC сторонним клиентом
мне нужно дату преобразовать в переменную типа дата
не подскажите как это сделать
или какой формат у числовой даты
			 
			
					
				Re: Преобразование даты
				Добавлено: 12 мар 2004, 14:37
				 Deinis
				База данных "Вопросы и ответы". Вопрос "Формат даты в условных операторах ТХО".
Для определения "код даты" (количества дней с 01 января 0001 года) в алгоритме используется следующая функция
To_Days(Date(ДД,ММ,ГГГГ)),
где ДД - день, ММ - месяц, ГГГГ - год.
To_Days(Date(01,06,2000)) = 730272
Обратное преобразование
From_Days(730272) = <01/06/2000>
			 
			
					
				Re: Преобразование даты
				Добавлено: 12 мар 2004, 15:20
				 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
			 
			
					
				
				Добавлено: 04 мар 2006, 17:32
				 VIY
				Может кто подсказать, как будет выглядеть SQL запрос делающий примерно следующее:
SELECT * FROM "PLPOR" where DATVIP='01.01.2006'
?
Галактика 7.12; PervasiveSQL 2000i.
не получается ни через Pervasive Control Center, ни через ODBC Дельфей7
			 
			
					
				
				Добавлено: 06 мар 2006, 06:15
				 IgorA
				SELECT * FROM "PLPOR" where DATVIP='2006-01-01'
Сначала месяц, потом день yyyy-mm-dd