Можно ли записать дату и время в базу ODBC, т.е. сформировать запрос типа "INSERT INTO MYTABLE (TIMESTAMP) VALUES({ts '####-##-## ##:##:##'})" и чтобы вместо символов # подставлялись значения каналов? Можно ли это сделать каким-либо другим способом?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
На данный момент есть два варианта: 1) Создать каналы типа день, месяц, год, час, секунда, минута (из FBD посылать в них соответствующие значения астрономических часов) и такие же поля в таблице, куда помещать значения этих каналов. Сформировать потом из этих данных полное время в СУБД - не проблема. 2) Создать в таблице поле - тип "дата" и в качестве настроек начального значения для него задать функцию, которая возвращает значение текущего времени (по крайней мере в MS Access это сделать можно). Канал для этого поля в ТМ создавать не нужно. Таким образом, когда Вы будете вставлять в такую таблицу новую запись или модифицировать уже существующую из ТМ через SQL-запрос, СУБД не найдя источника для этого поля отработает скрипт заданный для этого поля по умолчанию, т.е. поместит туда текущее время.
Posted by Alexey (Участник № / Member № 386) on :
Спасибо, что так быстро и полно ответили на вопрос
Posted by Tag (Участник № / Member № 34) on :
Что есть тип ДАТА или ВРЕМЯ? Это число с плавающей точкой, где целая часть - число дней c 1 января 100 г. (для продуктов Microsoft), а дробная часть - доля суток с 0 часов (12 дня соответствует 0.5)
Можно написал FBD, "упаковывающую" дату и время в число описанного выше формата. Такое число можно писать напрямую в поля БД с типом ДАТА или ВРЕМЯ либо передавать в ячейки Excel.
Правда есть одно "но": формат ДАТА-ВРЕМЯ занимает 8 байт, а канал ТМ5 - 4 байта, поэтому неудасться писать одним каналом полную метку времени, содержащую и дату и время. Приходится одним каналом писать дату, вторым - время. Соответсвенно должны быть 2 поля БД - одно для даты, другое для времени