Преобразование типа time
Модераторы: m0p3e, edward_K, Модераторы
- 
				Anima
- Постоянный гость
- Сообщения: 81
- Зарегистрирован: 10 июл 2006, 11:11
- Откуда: г. Кемерово
- Контактная информация:
Преобразование типа time
Добрый день!
Значение хранится во внешнем атрибуте типа time, подскажите как его вытащить в нормально виде через SQL?
При выводе запросом как есть показывает не время, а какое-то число типа "252065094", что это за тип и как его перобразовать средствами SQL?
			
			
									
						
										
						Значение хранится во внешнем атрибуте типа time, подскажите как его вытащить в нормально виде через SQL?
При выводе запросом как есть показывает не время, а какое-то число типа "252065094", что это за тип и как его перобразовать средствами SQL?
Re: Преобразование типа time
dbo.dthour(252065094), dbo.dtminute(252065094) и т.д.
			
			
									
						
										
						- 
				Den
- Местный житель
- Сообщения: 1847
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Преобразование типа time
+Ну или так еще :
			
			
									
						
										
						Код: Выделить всё
Create  Function [dbo].[IntToTime1] (@Date As Int) Returns datetime
As
Begin
	Declare @Res datetime
	Declare @CHour Char(2), @CMinute Char(2) ,@Csecond Char(2), @csec100 Char(2),@CTime VarChar(12)
	Declare @IHour Int, @IMinute Int , @Isecond Int , @isec100 int
	--часы
	Set @IHour=Cast(Ceiling(@Date/16777216) As Int)
	Set @CHour=Right(Cast(@IHour As VarChar(4)),4)
	Set @Date=@Date-(@IHour*16777216)
	--минуты
	Set @IMinute=Cast(Ceiling(@Date/65536) As Int)
	Set @CMinute=Right('00'+Cast(@IMinute As VarChar(2)), 2)
	Set @Date=@Date-(@IMinute*65536)
	--секунды
	Set @Isecond=Cast(Ceiling(@Date/256) As Int)
	Set @Csecond=Right('00'+Cast(@Isecond As VarChar(2)), 2)
	Set @Date=@Date-(@Isecond*256)
              --доли секунд
	Set @isec100=Cast(Ceiling(@Date) As int)
	Set @csec100=Right('00'+Cast(@isec100 As VarChar(2)), 2)
           Set @CTime=@CHour+':'+@CMinute+':'+@CSecond+'.'+@csec100
	Set @Res=convert(DateTime,'01.01.1900'+' '+@CTime)
	Return @Res
End
- 
				Алексей
- Местный житель
- Сообщения: 2898
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Преобразование типа time
А если в скрине есть поле типа time, как сделать чтобы при заполнении часов он автоматом не заполнял минуты, а то приходится идти и вручную их удалять.
			
			
									
						
										
						- 
				edward_K
- Заслуженный деятель интернет-сообщества
- Сообщения: 5189
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Преобразование типа time
к теме не имеет никакого отношения.
А так либо задается формат ввода либо в cmCheckField режете. Вообще если вам нужны часы лучше использовать поле word/int. Ну еще есть вариант использовать вычисляемые поля и работать с ним как Integer, коим он на самом деле и является.
			
			
									
						
										
						А так либо задается формат ввода либо в cmCheckField режете. Вообще если вам нужны часы лучше использовать поле word/int. Ну еще есть вариант использовать вычисляемые поля и работать с ним как Integer, коим он на самом деле и является.
- 
				Алексей
- Местный житель
- Сообщения: 2898
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Преобразование типа time
Не хотел плодить тем.
Мне нужны не часы, а само время. 08:00 например. изначально поле пустое 00:00, но как только вводишь 08, система подставляет автоматом текущие минуты. Хотелось бы этого избежать, т.к. может быть, например 08:30 или 08:45.
			
			
									
						
										
						Мне нужны не часы, а само время. 08:00 например. изначально поле пустое 00:00, но как только вводишь 08, система подставляет автоматом текущие минуты. Хотелось бы этого избежать, т.к. может быть, например 08:30 или 08:45.
- 
				Den
- Местный житель
- Сообщения: 1847
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Преобразование типа time
Не получается подкорректировать введенное значение time ,как советовали Выше , в cmCheckField ?
			
			
									
						
										
						Re: Преобразование типа time
Код: Выделить всё
cmCheckField:
 {
  If CurField=#MyTime
    set MyTime := time(hour(MyTime),0,0,0)
 };
- 
				Алексей
- Местный житель
- Сообщения: 2898
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Преобразование типа time
Не пробовал... зачем мне обнулять минуты, если я их введу вручную в количестве, например, 15 ?
			
			
									
						
										
						- 
				Den
- Местный житель
- Сообщения: 1847
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Преобразование типа time
Ну значит в скрине попробовать описать шаблон ввода(см доку про vip) и при правке значения преобразовывать введенное значение ко времени StrToTime