2013-10-11 4 views
1

Я работаю над SQLite Database, которая содержит столбец, который хранит значение в формате yyyy-MM-dd HH: mm: ss. Теперь мне нужно создать фильтр для выбора строк с фильтром в качестве этого столбца datetime. запрос: (., Которые я проверил с помощью оператора выбора без фильтра)SQLite Database - Compare DateTime

Select * from tbl_locations where datetime >= '2013-09-11 00:00:00' and datetime <='2013-09-13 00:00:00' 

Над запрос возвращает пустой набор, несмотря содержащий значения в этом слоте

Любое предложение, как я могу получить установить необходимые данные?

+0

Я не очень разбираюсь в SQLite, но у меня есть таблица в MySQL, которая использует переменной типа timestamp. Переменная, которую вы читаете из строки, даты, долгого или чего-то еще? Также вы могли бы «описать» на столе, чтобы мы могли видеть информацию о поле? – zero298

+0

@ zero298: все сравнения относятся к строкам, содержащим форматы datetime как yyyy-MM-dd. Столбец имеет тип текста. – Hitesh

ответ

0

Возможно, это выдержка из документации SQLite поможет вам:

1,2 Дата и время Datatype

SQLite не имеет класс памяти, отведенных для хранения даты и/или времени. Вместо этого, встроенные функции даты и времени из SQLite способны хранить даты и времени, как TEXT, REAL или INTEGER значения:

  • TEXT как строки ISO8601 ("YYYY-MM-DD HH: MM: SS .SSS ").
  • REAL как число юлианских дней, количество дней с полудня в Гринвиче 24 ноября 4714 г. B.C. согласно пролептическому григорианскому календарю.
  • INTEGER as Unix Время, количество секунд начиная с 1970-01-01 00:00:00 UTC.

Приложения могут выбирать даты и время в любом из этих форматов и свободно конвертировать между форматами, используя встроенные функции даты и времени.

установить дату и время функции, которые вы можете использовать в вашем SQL, чтобы построить свой запрос задокументированы в http://www.sqlite.org/lang_datefunc.html

0

Хорошо, я проверил это в MySQL, но, надеюсь, он будет работать. У меня была таблица, которая использовала timestamps и изменила столбец типа text. Затем я попытался следующий SQL запрос и получил те же результаты, что я обычно бы (помимо после запятой)

SELECT timestamp(stock_quote_timestamp) 
FROM stock.stock_quote 
WHERE stock_quote_timestamp < timestamp('2013-10-07 11:05:30')#@high_date 
AND  stock_quote_timestamp > timestamp('2013-10-03 14:09:03');#@low_date; 

Так в основном, просто конвертировать ваши text заявления timestamps так, чтобы они правильно сравнивать. О, и вам также нужно будет указать, что еще вы делаете SELECT ing, или вы можете сделать заявление о выборе соединения: SELECT *, timestamp(stock_quote_timestamp)...

+0

Это не SQLite! SQLite будет использовать 'date()', и ваш запрос сравнивает исходный 'stock_quote_timestamp' вместо вычисленного. –