Использование зарезервированного слова TimeStamp в качестве имени поля (Firebird 2.5)
-
05-07-2019 - |
Вопрос
Я расширяю уровень данных существующего приложения для работы с Firebird 2.5 в дополнение к MSSQL и SQLite, но наткнулся на камень преткновения.
У меня есть поле TimeStamp, в котором хранятся данные/время как тип TimeStamp.Это отлично работает в MSSQL и SQLite, где типом является datetime, но не работает в Firebird.Следующий SQL:
SELECT SysTrnId,'TimeStamp' from "TRANSACTIONS"
на первый взгляд работает, но поле TimeStamp возвращается как имя поля «CONSTANT», а содержимым является текст «метка времени».
Можно ли это сделать в Firebird, или мне придется переименовать поле и изменить код в других слоях данных.
Решение
Экранирующий символ firebird - это двойная кавычка "
. Обратите внимание, что в Firebird, если у вас есть поле, которое вы должны экранировать двойными кавычками, оно также становится чувствительным к регистру. Итак, если вы объявили свое поле как TimeStamp
, тогда выберите " TIMESTAMP " ...
завершится ошибкой с полем не найден
Другие советы
Я понятия не имею, работает ли это, но вы пробовали двойные цитаты вокруг «TimeMant», отдельные кавычки обычно указывают на постоянную строку.
С уважением
К