This is topic DATE_AND_TIME в SQL запросе in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/001758.html

Posted by stud2008 (Участник № / Member № 4502) on :
 
Подскажите как можно передать дату с экрана в SQL запрос? Со значением аргумента по умолчанию данные не выводятся.

В шаблоне подключения к базе данных формирую запрос
//
SELECT TOP 24
base.time #DT#,
base.P #P#,
base.T #T#
FROM
base
WHERE base.time > #DateFrom#
//
Аргументы
Имя Тип Тип данных Значение по умолчанию
DateFrom In DATE_AND_TIME dt#2015-11-11-16:30:00.000
P Out REAL
T Out REAL
//
При вызове через "ГЭ База данных" пишет ошибку Incorrect syntax. Если удалить условие WHERE то данные выводятся.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
TRACE MODE не накладывает никаких ограничений на синтаксис запросов и не управляет БД. Если подобное сообщение появляется, скорее всего действительно некорректный синтаксис SQL запроса. Запустите Трассировщик Администратора ODBC Windows, в полученных логах посмотрите на что конкретно ругается БД. Возможно формат метки времени не соответствует или тип разделителя и т.п.
 
Posted by stud2008 (Участник № / Member № 4502) on :
 
Если вставляю в запрос текстовую переменную вида '2015-10-11 16:30:00.000', то запрос выполняется.
Если использую переменную типа DATE_AND_TIME и инициализирую значением dt#2015-10-11-16:30:00.000, то в запрос передается такое же значение параметра dt#2015-10-11-16:30:00.000, пишет ошибку [SQL Server]Incorrect syntax near ':'. (102).
Как привести переменную DATE_AND_TIME к виду '2015-10-11 16:30:00.000'?
 
Posted by stud2008 (Участник № / Member № 4502) on :
 
При помещении аргумента даты в одинарные кавычки в рантайме работает. При тестировании в среде разработки не работает. Вопрос закрыт.
Трассировщик помог, в нем можно посмотреть строку запроса которая отправляется на SQL сервер.

SELECT TOP 24
base.time #DT#,
base.P #P#,
base.T #T#
FROM
base
WHERE base.time > '#DateFrom#'
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Предварительно согласуйте типы данный в шаблоне связи с СУБД и в таблице БД. Они должны быть соответствовать друг другу (а то то текстовая переменная, то временная).

Так же стоит учесть региональные настройки времени-даты.
Эту задачу можно решить с помощью функции преобразования типов
WHERE base.time > CDATE('#DateFrom#')
 
Posted by stud2008 (Участник № / Member № 4502) on :
 
Создаю меню для запроса к базе данных столкнулся с несколькими вопросами.
Для изменения даты в запросе создал переменную тип DATE_AND_TIME, а она инициализируется текущим временем, можно ли это отключить?
Для изменения даты использую ГО Дата и время, а он вносит сдвиг по часовому поясу даже если я по Гринвичу устанавливаю.
Вообще мне нужно выбирать только дату со сдвигом на контрактный час. Например контрактный час 12:00 выбираешь число 18.08.2022, а дата передается в запросе 17.08.2022 12:00. Как это можно реализовать?
 
Posted by stud2008 (Участник № / Member № 4502) on :
 
Собрал дату для запроса из атрибутов канала год, месяц, день привязанных к аргументам запроса в UINT. Получилась строка WHERE time >= '#year#-#mounth#-#day# 00:00:00'
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Аргумент Date_and_Time самостоятельно не принимает значение текущего времени, скорее всего Вы создали и привязали к аргументу канала класса Time. Вы можете его удалить. Достаточно аргумент Date_and_Time экрана привязать к аргументу Date_and_Time канала Call.SQLQuery.

ГЭ Дата и Время самостоятельно не вносит сдвиг. Используется то время, которое Вы ввели. Оно может отображаться со сдвигом по часовому поясу или нет. Для этого в настройках ГЭ Дата и Время задайте "Отображать как - региональное время"

Что бы задавать только дату, у ГЭ Дата и Время установите "Показывать = дата". Что бы при этом была конкретная дата, то Вы правильно указали о применении атрибутов год-месяц-день.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2