This is topic Использование функций SQL in forum Работа с приложениями (ODBC-SQL/OPC/DDE) at Форум TRACE MODE: техническая поддержка.


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

Posted by i.Sineev (Участник № / Member № 4448) on :
 
Добрый день.

Помогите разобраться со следующей проблемой:
В таблице БД ORACLE есть 2 поля времени, значения для которых ODBC драйвер ORACLE требует как строки timestamp. В ТМ же время представлено форматом unixtime, поэтому конвертирование времени из одного формата в другой неизбежно. Оптимальным решением было выбрано конвертирование времени на стороне БД.
Функция "unixts_to_date" принимает тип number, и возвращает необходимую строку. Вопрос в том, как теперь эту функция правильно использовать.

запрос
INSERT INTO SCADA.SAMPLE
(
ID_TAG,
TIME1,
TIME2,
STYPE,
SAMPLE
)
VALUES
(
25,
#time1#,
unixts_to_date(#time2#),
#stype#,
#value#
)

не выполняется именно из-за записи в time2 unixts_to_date(#time2#).

в то же время запрос

INSERT INTO SCADA.SAMPLE
(
ID_TAG,
DDEVICE,
DREQUEST,
ID_SAMPLETYPE,
SAMPLE
)
VALUES
(
25,
{ ts '2010-11-30 15:28:28' },
unixts_to_date(84153600),
0,
400
)

выполняется корректно

подскажите, в чём проблема.
Заранее спасибо.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Нельзя ли по трассировщику ODBC-драйвера уточнить как именно интерпретируется Ваш SQL-запрос ODBC-драйвером и какие обшибки он обнаруживает?
 
Posted by i.Sineev (Участник № / Member № 4448) on :
 
В аргумент (IN, UDINT) канала CALL типа БД из атрибута 45 канала FLOAT попадает строковое представление атрибута 45.

В случае аналогичной передачи этого атрибута в аналогичный аргумент канала CALL типа program в аргумент программы попадает именно unixtime.

Как такое может быть?
Выдержка из справки:
quote:

(45, T) Время изменения – в этот атрибут записывается время пересчета/отработки канала; атрибут возвращает 4-байтовое число секунд с 01.01.70;


 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Во внутренних интерфейсах Trace Mode 6 дата-время передается как 4-байтовое число секунд с 01.01.70.
В SQL-запросах - в строковом представлении.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2