Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Вставить данные типа DATETIME (число прочтений - 2822 )
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Вставить данные типа DATETIME
30. Июня 2010 :: 12:41
Печать  
Получая запросом из 1С данные типа Дата:

SELECT
|$СпрДопИнфа.ДатаПослПокупки as [ДатаПослПокупки $Дата]

Затем надо это вставить в таблицу SQL типа DATETIME. Пробовал по-разному, вываливаются всякие ошибки.

Единственный вариант, который сработал, это как-то так:
SELECT
|(CAST(YEAR($СпрДопИнфа.ДатаПослПокупки) as CHAR(4))+'.'+CAST(MONTH($СпрДопИнфа.ДатаПослПокупки) as CHAR(2))+'.'+CAST(DAY($СпрДопИнфа.ДатаПослПокупки) as CHAR(2))) as ДатаПослПокупки

А потом при вставке:
SET sm_datazak=CAST('"+ТЗ.ДатаПослПокупки+"' as DATETIME).

Не слишком ли замудрил, есть какие-то более лаконичные способы?  Улыбка
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Вставить данные типа DATETIME
Ответ #1 - 30. Июня 2010 :: 13:34
Печать  
так должно правильно вставлять
insert into #t(MyDate) values('"+Формат(МояДата,"ДГГГГММДД")+"')
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Вставить данные типа DATETIME
Ответ #2 - 30. Июня 2010 :: 13:53
Печать  
рс.УстановитьТекстовыйПараметр(ДатаПослПокупки, ТЗ.ДатаПослПокупки)
и
SET sm_datazak = :ДатаПослПокупки~~
  

1&&2&&3
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Вставить данные типа DATETIME
Ответ #3 - 01. Июля 2010 :: 07:01
Печать  
Цитата:
aФормат(МояДата,"ДГГГГММДД")


Если делать так:
sm_datazak="+Формат(СокрЛП(ТЗ.ДатаПослПокупки),"ДГГГГММДД")+

то пишет "State 22003, native 8115, message [Microsoft][ODBC SQL Server Driver][SQL Server]Arithmetic overflow error converting expression to data type datetime".

А вот так работает:

sm_datazak=CAST('"+Формат(СокрЛП(ТЗ.ДатаПослПокупки),"ДГГГГММДД")+"' as DATETIME).

Вариант tradа тоже счас попробуем  Улыбка
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Вставить данные типа DATETIME
Ответ #4 - 01. Июля 2010 :: 08:30
Печать  
Neo писал(а) 01. Июля 2010 :: 07:01:
Цитата:
aФормат(МояДата,"ДГГГГММДД")


Если делать так:
sm_datazak="+Формат(СокрЛП(ТЗ.ДатаПослПокупки),"ДГГГГММДД")+

то пишет "State 22003, native 8115, message [Microsoft][ODBC SQL Server Driver][SQL Server]Arithmetic overflow error converting expression to data type datetime".

А вот так работает:

sm_datazak=CAST('"+Формат(СокрЛП(ТЗ.ДатаПослПокупки),"ДГГГГММДД")+"' as DATETIME).

Вариант tradа тоже счас попробуем  Улыбка


ну дык, конечно, оверфлоу, ты ж в первом варианте одинарные кавычки не поставилПодмигивание
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Вставить данные типа DATETIME
Ответ #5 - 01. Июля 2010 :: 08:30
Печать  
Neo писал(а) 01. Июля 2010 :: 07:01:
Arithmetic overflow error converting expression to data type datetime

апострофы пропустил.
обрати внимание в примере alexdd они есть.
  

1&&2&&3
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Вставить данные типа DATETIME
Ответ #6 - 01. Июля 2010 :: 08:44
Печать  
Ясно, а что, такой формат '20100701' SQL сразу воспринимает как дату, или сам преобразовывает в дату?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Вставить данные типа DATETIME
Ответ #7 - 01. Июля 2010 :: 08:53
Печать  
преобразовывает
  

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