Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Требуется помощь! (число прочтений - 2018 )
Irina
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 08. Июня 2011
Требуется помощь!
07. Июля 2011 :: 11:09
Печать  
Из за чего может различаться результат выполнения запроса через ODBCRecordSet  и напрямую на SQL сервере.
1С v7.7 MSServer  2005 EXpress .
запрос:
"Convert(datetime,'2016-10-23 20:44:11',120)"
На сервере возвращает 2016-10-23 20:44:11.000
В 1С 23.10.16.
Особенно интересует получения Времени.
В целом мне надо  из даты и строки(в оторой записано время) получить типа datetime чтобы, к полученному значению можно было бы прибавить произвольное количество часов.
Если  кто нибудь в курсе как это сделать , то пожалуйста подскажите. спасибо.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Требуется помощь!
Ответ #1 - 07. Июля 2011 :: 11:52
Печать  
дык используй dateadd:

select
dateadd (hour,2,Convert(datetime,'2016-10-23 20:44:11',120))

= 2016-10-23 22:44:11.000
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Требуется помощь!
Ответ #2 - 07. Июля 2011 :: 12:10
Печать  
лучше приведите весь запрос.
надо наверное так написать ваш запрос
"Convert(char,cast('2016-10-23 20:44:11' as datetime) ,120)"
  
Наверх
 
IP записан
 
Irina
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 08. Июня 2011
Re: Требуется помощь!
Ответ #3 - 07. Июля 2011 :: 12:13
Печать  
Так, я это и собираюсь сделать, но мне надо чтобы добаление часов происходила не к 23.10.16 00.00.00 (или какое там время по умолчанию скуль  ставит ),а непосредственно к моему текущему времени, а для этого мне надо  получить время в формате datetime а не строка. Проблема в том что при переводе, 1С почему-то отсекает время, хотя сервак возвращает результатом convert значение дата время....
  
Наверх
 
IP записан
 
Irina
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 08. Июня 2011
Re: Требуется помощь!
Ответ #4 - 07. Июля 2011 :: 12:15
Печать  
Z1 писал(а) 07. Июля 2011 :: 12:10:
лучше приведите весь запрос.
надо наверное так написать ваш запрос
"Convert(char,cast('2016-10-23 20:44:11' as datetime) ,120)"

cast('2016-10-23 20:44:11' as datetime) тоже возвращает значение уже без времени
  
Наверх
 
IP записан
 
Irina
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 08. Июня 2011
Re: Требуется помощь!
Ответ #5 - 07. Июля 2011 :: 12:18
Печать  
     ТекстЗапроса="
     |SELECT
     |Convert(datetime,'2016-10-23 20:44:11',120) 
     |"; 
Рс.выполнитьИнструкцию(ТекстЗапроса,ТзЗапрос);

Результат запроса          23.10.16
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Требуется помощь!
Ответ #6 - 07. Июля 2011 :: 12:23
Печать  
(3) Приведите Ваш запрос полностью

Следующий пример
Код
Выбрать все
Процедура Сформировать2()
ПрЗапрос = СоздатьОбъект("ODBCRecordSet");
ТекстЗапроса =  "select Convert(char,cast('2016-10-23 20:44:11' as datetime) ,120)";
Зн_Время = ПрЗапрос.ВыполнитьСкалярный(ТекстЗапроса);
Сообщить("Зн_Время = " + Зн_Время);
КонецПроцедуры 



выдает результат

Зн_Время = 2016-10-23 20:44:11  

  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Требуется помощь!
Ответ #7 - 07. Июля 2011 :: 12:26
Печать  
select
Dateadd (hour,5,Convert(datetime,'2016-10-23 20:44:11',120))

= 24 число, если что..
Улыбка

Нормально там всё будет со времененм, это просто 1с-ина не имеет типа datetime в чистом виде.
Только дата..

ну или как строку возвращай:

Код
Выбрать все
select
Cast(Dateadd(hour,5,Convert(datetime,'2016-10-23 20:44:11',120)) as char) 




  
Наверх
 
IP записан
 
Irina
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 08. Июня 2011
Re: Требуется помощь!
Ответ #8 - 07. Июля 2011 :: 12:27
Печать  
Z1 писал(а) 07. Июля 2011 :: 12:23:
(3) Приведите Ваш запрос полностью

Следующий пример
Код
Выбрать все
Процедура Сформировать2()
ПрЗапрос = СоздатьОбъект("ODBCRecordSet");
ТекстЗапроса =  "select Convert(char,cast('2016-10-23 20:44:11' as datetime) ,120)";
Зн_Время = ПрЗапрос.ВыполнитьСкалярный(ТекстЗапроса);
Сообщить("Зн_Время = " + Зн_Время);
КонецПроцедуры 



выдает результат

Зн_Время = 2016-10-23 20:44:11  


СПАСИБО!!!!!!!! Получилось, что -то я в первом сообщении CHAr пропустила. Улыбка
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Требуется помощь!
Ответ #9 - 07. Июля 2011 :: 12:27
Печать  
Ну так в 5 и 6 совершенно разные запросы.
Посмотрите внимательнее на тексты запросов.
  
Наверх
 
IP записан
 
Irina
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 08. Июня 2011
Re: Требуется помощь!
Ответ #10 - 07. Июля 2011 :: 12:42
Печать  
Z1 писал(а) 07. Июля 2011 :: 12:27:
Ну так в 5 и 6 совершенно разные запросы.
Посмотрите внимательнее на тексты запросов.

уже заметила и поняла, еще раз спасибо....
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать