Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Время (число прочтений - 12727 )
U_zer
Экс-Участник


Время
21. Июля 2006 :: 09:50
Печать  
Всем привет!

Код
Выбрать все
select
 cast(Left(j.Date_Time_iddoc,8) as DATETIME) ДатаДокум,
 ?		? ВремяДокум
from _1sjourn j (nolock)
 



Дополните строку плиз!
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Время
Ответ #1 - 21. Июля 2006 :: 10:05
Печать  
substring(j.Date_Time_iddoc, 9, 6)
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
U_zer
Экс-Участник


Re: Время
Ответ #2 - 21. Июля 2006 :: 10:09
Печать  
В результате - Нечто типа (4SW3456)
Мне нужно как-то это типизировать для ТабличногоПоля
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Время
Ответ #3 - 21. Июля 2006 :: 10:13
Печать  
Переведи из 36ричной системы в 10чную и раздели на 10000. Получится время от начала суток в секундах. Примеры процедур перевода на стороне сервера есть в инете.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Время
Ответ #4 - 21. Июля 2006 :: 11:21
Печать  
или на стороне клиента:
Код
Выбрать все
...
Функция ФорматВремя(Время) Экспорт
	ММ=Цел(Время/60);СС=Время%60;
	ЧЧ=Цел(ММ/60);ММ=ММ%60;
	Возврат Формат(ЧЧ,"Ч(0)2")+":"+Формат(ММ,"Ч(0)2")+":"+Формат(СС,"Ч(0)2");
КонецФункции

Функция ФорматВремя36(Время36) Экспорт
	Возврат ФорматВремя(_strtoid(Время36)/10000);
КонецФункции

...

Процедура Поле1ПриВыводеСтроки(ТП,ОформлениеСтроки,ДанныеСтроки)
	кум));
КонецПроцедуры 

  

1&&2&&3
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: Время
Ответ #5 - 21. Июля 2006 :: 12:07
Печать  
Спасибо!
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Время
Ответ #6 - 21. Июля 2006 :: 12:33
Печать  
А вот ещё вариант
Код
Выбрать все
Процедура ВремяДокументаСтрокой()
	ТекстЗапроса = "
	|CREATE FUNCTION [ВремяДокументаСтрокой] (@DateTime char(23), @Delimiter char(1)) Returns varchar(8)
	|Begin
	|	DECLARE @strTime char(6), @hours int, @minutes int, @sec int
	|	SET @strTime = Substring(@DateTime, 9, 6)
	|	SET @sec = dbo.Convert36To10(@strTime) / 10000
	|	SET @hours = @sec / 3600
	|	SET @sec = @sec - (@hours * 3600)
	|	SET @minutes = @sec / 60
	|	SET @sec = @sec - (@minutes * 60)
	|	DECLARE @res varchar(8)
	|	if @hours < 10
	|		SET @res = '0' + CAST(@hours as char(1))
	|	else
	|		SET @res = CAST(@hours as char(2))
	|	if @minutes < 10
	|		SET @res = @res + @Delimiter + '0' + CAST(@minutes as char(1))
	|	else
	|		SET @res = @res + @Delimiter + CAST(@minutes as char(2))
	|	if @sec < 10
	|		SET @res = @res + @Delimiter + '0' + CAST(@sec as char(1))
	|	else
	|		SET @res = @res + @Delimiter + CAST(@sec as char(2))
	|
	|	return @res
	|End
	|";
	СоздатьФункцию("ВремяДокументаСтрокой", ТекстЗапроса);
КонецПроцедуры
 



ну и заодно дата
Код
Выбрать все
Процедура ДатаДокументаСтрокой()
	ТекстЗапроса = "
	|CREATE FUNCTION [ДатаДокументаСтрокой] (@DateTime char(23)) Returns char(10)
	|Begin
	|	return Substring(@DateTime, 7, 2)+ '.' + Substring(@DateTime, 5, 2) + '.' + Left(@DateTime, 4)
	|End
	|";
	СоздатьФункцию("ДатаДокументаСтрокой", ТекстЗапроса);
КонецПроцедуры
 

  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Время
Ответ #7 - 21. Июля 2006 :: 13:28
Печать  
Саш, а у тебя функция постоянно в базе присутствует, по окончании сеанса ее не дропаешь?
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Время
Ответ #8 - 21. Июля 2006 :: 13:35
Печать  
Вопрос снят, прочел в соседней ветке Улыбка
  
Наверх
 
IP записан
 
villy
Senior Member
****
Отсутствует



Сообщений: 287
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Время
Ответ #9 - 21. Июля 2006 :: 15:31
Печать  
тоже стоит глянуть на всякий случай Улыбка
http://www.sinor.ru/~my1c/knowhow/formtime.html
  
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Время
Ответ #10 - 21. Июля 2006 :: 15:51
Печать  
villy писал(а) 21. Июля 2006 :: 15:31:
тоже стоит глянуть на всякий случай Улыбка
http://www.sinor.ru/~my1c/knowhow/formtime.html


Дык trad оно самое и написал...
  
Наверх
 
IP записан
 
HeiHeShang
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 101
Зарегистрирован: 01. Августа 2006
Re: Время
Ответ #11 - 23. Августа 2006 :: 12:34
Печать  
ADirks писал(а) 21. Июля 2006 :: 12:33:
А вот ещё вариант
Код
Выбрать все
Процедура ВремяДокументаСтрокой()
	ТекстЗапроса = "
	|CREATE FUNCTION [ВремяДокументаСтрокой] (@DateTime char(23), @Delimiter char(1)) Returns varchar(8)
	|Begin
	|	DECLARE @strTime char(6), @hours int, @minutes int, @sec int
	|	SET @strTime = Substring(@DateTime, 9, 6)
	|	SET @sec = dbo.Convert36To10(@strTime) / 10000
	|	SET @hours = @sec / 3600
	|	SET @sec = @sec - (@hours * 3600)
	|	SET @minutes = @sec / 60
	|	SET @sec = @sec - (@minutes * 60)
	|	DECLARE @res varchar(8)
	|	if @hours < 10
	|		SET @res = '0' + CAST(@hours as char(1))
	|	else
	|		SET @res = CAST(@hours as char(2))
	|	if @minutes < 10
	|		SET @res = @res + @Delimiter + '0' + CAST(@minutes as char(1))
	|	else
	|		SET @res = @res + @Delimiter + CAST(@minutes as char(2))
	|	if @sec < 10
	|		SET @res = @res + @Delimiter + '0' + CAST(@sec as char(1))
	|	else
	|		SET @res = @res + @Delimiter + CAST(@sec as char(2))
	|
	|	return @res
	|End
	|";
	СоздатьФункцию("ВремяДокументаСтрокой", ТекстЗапроса);
КонецПроцедуры
 



ну и заодно дата
Код
Выбрать все
Процедура ДатаДокументаСтрокой()
	ТекстЗапроса = "
	|CREATE FUNCTION [ДатаДокументаСтрокой] (@DateTime char(23)) Returns char(10)
	|Begin
	|	return Substring(@DateTime, 7, 2)+ '.' + Substring(@DateTime, 5, 2) + '.' + Left(@DateTime, 4)
	|End
	|";
	СоздатьФункцию("ДатаДокументаСтрокой", ТекстЗапроса);
КонецПроцедуры
 


Чет у меня сервак ругается на такое "dbo.Convert36To10" где взяли ?
  
Наверх
 
IP записан
 
HeiHeShang
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 101
Зарегистрирован: 01. Августа 2006
Re: Время
Ответ #12 - 23. Августа 2006 :: 12:46
Печать  
trad писал(а) 21. Июля 2006 :: 11:21:
или на стороне клиента:
Код
Выбрать все
...
Функция ФорматВремя(Время) Экспорт
	ММ=Цел(Время/60);СС=Время%60;
	ЧЧ=Цел(ММ/60);ММ=ММ%60;
	Возврат Формат(ЧЧ,"Ч(0)2")+":"+Формат(ММ,"Ч(0)2")+":"+Формат(СС,"Ч(0)2");
КонецФункции

Функция ФорматВремя36(Время36) Экспорт
	Возврат ФорматВремя(_strtoid(Время36)/10000);
КонецФункции

...

Процедура Поле1ПриВыводеСтроки(ТП,ОформлениеСтроки,ДанныеСтроки)
	кум));
КонецПроцедуры 


_strtoid(Время36) почему-то всегда возвращает 0. Время36 это что ?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Время
Ответ #13 - 23. Августа 2006 :: 13:28
Печать  
Время36 - это формальный параметр функции;
В качестве фактического параметра туда передается ДанныеСтроки.ВремяДокум;
А ДанныеСтроки.ВремяДокум нужно рассматривать в контексте ветки, т.е. substring(j.Date_Time_iddoc, 9, 6)
  

1&&2&&3
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Время
Ответ #14 - 23. Августа 2006 :: 13:35
Печать  
Код
Выбрать все
	//http://www.sinor.ru/~my1c/knowhow/SQLcnvID.html
	ТекстЗапроса = "
	|CREATE FUNCTION Convert36To10(@Val_36 varchar(9)) Returns int
	|Begin
	|	DECLARE @j int, @len int, @Val_10 int
	|	DECLARE @Arr36 char(36)
	|	SET @Arr36 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
	|	SET @Val_10 = 0
	|	SET @j = 1
	|	SET @Val_36 = LTrim(RTrim(@Val_36))
	|	SET @len = Len(@Val_36)
	|	while @j <= @len
	|	begin
	|		if @j <> 1
	|			SET @Val_10 = @Val_10 * 36
	|		SET @Val_10 = @Val_10 + CharIndex(Substring(@Val_36, @j ,1), @Arr36) - 1
	|		SET @j = @j+1
	|	end
	|	Return @Val_10
	|End
	|";
 

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать