|   |   | 
| 
 | v7: 1C++ Syntax error converting datetime from character string. | ☑ | ||
|---|---|---|---|---|
| 0
    
        burrya 08.01.13✎ 18:00 | 
        ТекстЗапросаЗаданийСМС = "
  |SELECT | Спр.ID as [Задание $Справочник.ЗаданияНаОтправкуСМС] |FROM | $Справочник.ЗаданияНаОтправкуСМС as Спр (nolock) |WHERE | Спр.IsMark = 0 AND | $Спр.ДатаОтправки BETWEEN :ДатаНачалаРаботыСистемы AND :ДатаОтправки~"; ODBCRecordset.УстановитьТекстовыйПараметр("ДатаНачалаРаботыСистемы", Константа.ДатаНачала); ODBCRecordset.УстановитьТекстовыйПараметр("ДатаОтправки", ТекущаяДата()); Задания = ODBCRecordset.ВыполнитьИнструкцию(ТекстЗапросаЗаданийСМС); Задания.ВыбратьСтроки(); Задания = ODBCRecordset.ВыполнитьИнструкцию(ТекстЗапросаЗаданийСМС); {D:\TEST.ERT(17)}: State 22007, native 241, message [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting datetime from character string. | |||
| 1
    
        Wobland 08.01.13✎ 18:07 | 
        да что вы говорите?     | |||
| 2
    
        КонецЦикла 08.01.13✎ 18:07 | 
        Может надо применить convert?
  А вообще поезг и изучение конфигурации помогут | |||
| 3
    
        viktor_vv 08.01.13✎ 18:08 | 
        Если мне не изменяет память, то модификатор параметра в DateTime "~~".
  $Спр.ДатаОтправки BETWEEN :ДатаНачалаРаботыСистемы~~ AND :ДатаОтправки~~"; | |||
| 4
    
        Wobland 08.01.13✎ 18:13 | 
        (3) изменяет     | |||
| 5
    
        viktor_vv 08.01.13✎ 18:22 | 
        (4) Ну таки в доке так и написано.
  Дата 0: char(8) - каноническое представление даты; 1: char(9) - каноническое представление даты + символ “Z” (используется для обозначения момента времени конца этой даты); 2: datetime. Сейчас попробую. | |||
| 6
    
        Wobland 08.01.13✎ 18:27 | 
        (5) документацию не читал, у меня работает так:
  |WHERE | Жур.Date_Time_IDDoc BETWEEN :ДатаНачала AND :ДатаОкончания~ | |||
| 7
    
        viktor_vv 08.01.13✎ 18:30 | 
        (6) Так 
  Жур.Date_Time_IDDoc тип char(23) а унего реквизит с типом "дата" (я так подозреваю), в базе это DateTime. Проверил (3), все работает. | |||
| 8
    
        burrya 08.01.13✎ 18:51 | 
        таки да
  ТекстЗапросаЗаданийСМС = " |SELECT | Спр.ID as [Задание $Справочник.ЗаданияНаОтправкуСМС] |FROM | $Справочник.ЗаданияНаОтправкуСМС as Спр (nolock) |WHERE | Спр.IsMark = 0 AND | $Спр.ДатаОтправки BETWEEN convert(datetime, :ДатаНачалаРаботыСистемы) AND convert(datetime, :ДатаОтправки)" Работает | |||
| 9
    
        burrya 08.01.13✎ 18:51 | 
        Всем спасибо.     | |||
| 10
    
        КонецЦикла 08.01.13✎ 22:39 | 
        молодец     | |||
| 11
    
        trad 08.01.13✎ 23:41 | 
        конверт то зачем?
  в (3) правильный ответ | |||
| 12
    
        КонецЦикла 09.01.13✎ 01:50 | 
        точно, на то как применил не посмотрел :)     | |||
| 13
    
        КонецЦикла 09.01.13✎ 02:11 | 
        (11) Хм... интеерсно... а ведь 1С не умеет хранить короткую дату, что у него там в справочнике за дата такая?
  У меня всегда с ~ работало | |||
| 14
    
        trad 09.01.13✎ 09:25 | 
        (13) а при чем тут короткая дата?     | |||
| 15
    
        dk 09.01.13✎ 09:29 | 
        Константа.ДатаНачала тип какой? Дата или строка?     | |||
| 16
    
        trad 09.01.13✎ 09:34 | 
        (13)"У меня всегда с ~ работало"
  уверен? сильно сомневаюсь Если текстовый параметр типа Дата, то: 1) при 0 модификаторе в текст будет вставлен литерал-строка 'ггггммдд', что при сравнении с полем типа datetime приведет к неявному преобразованию типа строки к datetime 2) при 2 модификаторе в текст будет вставлен литерал-дата {d 'гггг-мм-дд'}, что при сравнении с полем типа datetime приведет сравнению без каких-либо преобразований типов 3) при 1 модификаторе в текст будет вставлен литерал-строка 'ггггммддZ', что при сравнении с полем типа datetime приведет к попытке неявного преобразования типа, а это в свою очередь невозможно и приводит к ошибке: "Syntax error converting datetime from character string." | |||
| 17
    
        КонецЦикла 09.01.13✎ 13:54 | 
        (16) Честно, даже полез проверять
  Был SQL 2000, потом SQL 2005 В чужих отчетах две тильдочки, у меня - одна (допустим для регистров, позиции документов) | |||
| 18
    
        trad 09.01.13✎ 14:08 | 
        (16) Ну так а позиция тут ни при чем - она везде строка. И первый модификатор как раз для сравнения с ней и придуман (как позиция конца даты)
  В ветке речь про сравнение с реквизитом типа Дата (т.е. datetime) | |||
| 19
    
        trad 09.01.13✎ 14:08 | 
        (18) к (17)     | |||
| 20
    
        КонецЦикла 09.01.13✎ 14:16 | 
        (18) Тьфу, ну бывает :)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |