Что нового

[Данные, строки] Postgre SQL запрос с фильтром по дате

kristow13

Новичок
Сообщения
76
Репутация
0
Привет всем!
Подключаюсь к базе Postgre вот так:
Код:
;создание объекта для подключения к PostgreSQL32
$ConnObj = ObjCreate("ADODB.Connection")
If $ConnObj = 0 Then
    MsgBox(0,"","Error create ADODB.Connection",2)
    Exit
EndIf
;создание объекта для получения данных из PostgreSQL32
$RezObj = ObjCreate("ADODB.Recordset")
If $RezObj = 0 Then
    MsgBox(0,"","Error create ADODB.Connection",2)
    Exit
EndIf
;подключение к PostgreSQL32
$ConnObj.Open("PostgreSQL32")
;обработать ошибку
If $ConnObj.State = 0 Then
    MsgBox(0,"","Error create Connect PostgreSQL32",2)
    Exit
EndIf
$RezObj.ActiveConnection = $ConnObj

Запросы без фильтра работают, но они имеют специфический синтаксис... Тем не менее, вот такой запрос работает, читает таблицу:
Код:
$QueryRez = $RezObj.Open('SELECT "Tepl"."Arhiv_cnt"."DataValue", "Tepl"."Arhiv_cnt".typ_arh, "Tepl"."Arhiv_cnt".pr_id, "Tepl"."Arhiv_cnt"."DateValue" FROM "Tepl"."Arhiv_cnt" WHERE "Tepl"."Arhiv_cnt".pr_id = 18 ')
   While Not $RezObj.EOF
	  $a1 = $RezObj.Fields(0).Value
	  $a2 = $RezObj.Fields(1).Value
	  $a3 = $RezObj.Fields(2).Value
	  $a4 = $RezObj.Fields(3).Value
	  ConsoleWrite("d1 ="&$a1&" d2 ="&$a2&" d3 ="&$a3 &" d4 ="&$a4 & @LF)
	  $RezObj.MoveNext
   WEnd
   $QueryRez = $RezObj.Close()

Но мне нужно фильтровать запрос по дате...
т.е. вот такой запрос в sql отладчике работает:
Код:
SELECT "Tepl"."Arhiv_cnt"."DataValue", "Tepl"."Arhiv_cnt".typ_arh, "Tepl"."Arhiv_cnt".pr_id, "Tepl"."Arhiv_cnt"."DateValue" FROM "Tepl"."Arhiv_cnt" WHERE "Tepl"."Arhiv_cnt".pr_id = 18 and "Tepl"."Arhiv_cnt"."DateValue" > '2016-01-01'

Мой вопрос, как вставить дату, если у меня SQL запрос окружен одинарной кавычкой, а названия столбцов с двойными кавычками, т.е. запрос окружить двойными кавычками не получится. А дату надо окружить обязательно одинарными, иначе не работает...
Подскажите что делать? :stars:
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
kristow13
дату надо окружить обязательно одинарными
При проблемах с кавычками тренируйтесь на консоле
Код:
; единая строка
$str = 'SELECT "Tepl"."Arhiv_cnt"."DataValue", "Tepl"."Arhiv_cnt".typ_arh, "Tepl"."Arhiv_cnt".pr_id, "Tepl"."Arhiv_cnt"."DateValue" FROM "Tepl"."Arhiv_cnt" WHERE "Tepl"."Arhiv_cnt".pr_id = 18 and "Tepl"."Arhiv_cnt"."DateValue" > ''2016-01-01'''
ConsoleWrite($str & @CRLF)

; составная строка
$data = "'2016-01-01'"
$str = 'SELECT "Tepl"."Arhiv_cnt"."DataValue", "Tepl"."Arhiv_cnt".typ_arh, "Tepl"."Arhiv_cnt".pr_id, "Tepl"."Arhiv_cnt"."DateValue" FROM "Tepl"."Arhiv_cnt" WHERE "Tepl"."Arhiv_cnt".pr_id = 18 and "Tepl"."Arhiv_cnt"."DateValue"' & " > " & $data
ConsoleWrite($str & @CRLF)
 
Автор
kristow13

kristow13

Новичок
Сообщения
76
Репутация
0
InnI сказал(а):
kristow13
дату надо окружить обязательно одинарными
При проблемах с кавычками тренируйтесь на консоле
Код:
; единая строка
$str = 'SELECT "Tepl"."Arhiv_cnt"."DataValue", "Tepl"."Arhiv_cnt".typ_arh, "Tepl"."Arhiv_cnt".pr_id, "Tepl"."Arhiv_cnt"."DateValue" FROM "Tepl"."Arhiv_cnt" WHERE "Tepl"."Arhiv_cnt".pr_id = 18 and "Tepl"."Arhiv_cnt"."DateValue" > ''2016-01-01'''
ConsoleWrite($str & @CRLF)

; составная строка
$data = "'2016-01-01'"
$str = 'SELECT "Tepl"."Arhiv_cnt"."DataValue", "Tepl"."Arhiv_cnt".typ_arh, "Tepl"."Arhiv_cnt".pr_id, "Tepl"."Arhiv_cnt"."DateValue" FROM "Tepl"."Arhiv_cnt" WHERE "Tepl"."Arhiv_cnt".pr_id = 18 and "Tepl"."Arhiv_cnt"."DateValue"' & " > " & $data
ConsoleWrite($str & @CRLF)
Спасибо за ответ.
Мистика прям... я думал что подряд поставленные одинарные кавычки не дадут нужного результата!
Спасибо за помощь!
 
Верх