Цель C, SQLite ВЫБЕРИТЕ МЕЖДУ ПРОБЛЕМОЙ - PullRequest
1 голос
/ 03 мая 2011

Я пытаюсь извлечь запись из базы данных SQLite на основе отметки времени UNIX, выбранной скроллером.Каждая запись имеет временную метку и длительность, поэтому, когда выбранная временная метка находится после времени начала и после начального времени плюс продолжительность, которую нужно выбрать.

Я написал запрос, в который я не только верюдолжен работать, но также работает в клиенте SQLite, который у меня есть, но я не использую SQLite, который поставляется с XCode.

SELECT * FROM `booking` WHERE '1304168400' BETWEEN `stamp` AND (`stamp`+(`duration`*60))

Это мой запрос.Отметка времени является выбранной отметкой времени, а поле отметки - отметкой времени записи, а длительность - продолжительностью бронирования в минутах.

Единственная причина, по которой я вижу, что это работает с использованием имеющегося у меня клиента, заключается в том, чтоверсия SQLite отличается, и либо команда BETWEEN не поддерживается, либо не поддерживается аналогичным образом.

Буду признателен за любые советы или помощь.Спасибо!

1 Ответ

2 голосов
/ 04 мая 2011

Вот как должен выглядеть запрос SQLite, когда он попадает в SQLite.(Вокруг буквальной отметки времени нет кавычек, нет обратных кавычек.) Если вы можете открыть базу данных с помощью SQLite и выполнить этот запрос, этот синтаксис должен работать.

sqlite> SELECT *
        FROM booking
        WHERE 1304168400 BETWEEN stamp and (stamp + (duration * 60));

Защитные идентификаторы с двойными кавычками, а не с обратными кавычками.

sqlite> SELECT *
        FROM "booking"
        WHERE 1304168400 BETWEEN "stamp" and ("stamp" + ("duration" * 60));

Вы можете определить, какая версия SQLite выполняется по этому запросу.

sqlite> select sqlite_version();
...