Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Проблемки с запросом в SQLite (с даты) / 6 сообщений из 6, страница 1 из 1
28.04.2009, 15:49
    #35958708
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемки с запросом в SQLite (с даты)
Есть тапрос:
Код: plaintext
SELECT * from table1 WHERE date_entering<= data

И прикол в том, что находит только даты которые меньше заданой "date_entering< data", а вот равно заданой не ищет, тоесть "date_entering = data".
Это глюк или я что-то не так делаю ???
...
Рейтинг: 0 / 0
28.04.2009, 19:57
    #35959473
Alexbootch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемки с запросом в SQLite (с даты)
Дату надо писать в формате "YYYY-MM-DD"

и выбирать соответственно:

SELECT * from table1 WHERE date_entering<='2007-08-02'
...
Рейтинг: 0 / 0
29.04.2009, 06:29
    #35959832
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемки с запросом в SQLite (с даты)
potkin,

SQLite DateAndTimeFunctions , а конкретней правильную дату можно получить используя функцию strftime( ) ,
SELECT * from table1 WHERE date_entering = strftime("%Y-%m-%d", "2009-01-01")
...
Рейтинг: 0 / 0
29.04.2009, 14:04
    #35960923
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемки с запросом в SQLite (с даты)
potkinЕсть тапрос:
Код: plaintext
SELECT * from table1 WHERE date_entering<= data

И прикол в том, что находит только даты которые меньше заданой "date_entering< data", а вот равно заданой не ищет, тоесть "date_entering = data".
Это глюк или я что-то не так делаю ???

Вы используете несколько устаревшую версию SQLite. Дело в том, что долгое время в SQLite дата хранилась как число с плавающей точкой (внутреннее представление). В последних версиях эта проблема решена, теперь дата хранится в микросекундах (хотя представляется по-прежнему как дробное число дней) и для сравнения дат можно использовать оператор равенства. Если нет возможности обновиться, следует сравнивать с диапазоном, границы которого отличаются, например, на 1 ms от хранимой даты (вообще-то хватит и микросекунды, но не могу ручаться, что на всех архитектурах микросекунды будет достаточно).
...
Рейтинг: 0 / 0
30.04.2009, 12:59
    #35963286
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемки с запросом в SQLite (с даты)
Пользуюсь последней библиотекой:
http://sqlite.org/sqlitedll-3_6_13.zip

Связуюсь с ней через:
"using Finisar.SQLite;" (C# .NET 2.0 - 3.5)
...
Рейтинг: 0 / 0
30.04.2009, 13:54
    #35963451
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемки с запросом в SQLite (с даты)
MBGДело в том, что долгое время в SQLite дата хранилась как число с плавающей точкой (внутреннее представление).
Вообще то SQLite позволяет хранить дату как заблагорасудится - хоть строкой, хоть числом,
хоть в собственном бинарном формате и т.д. Встроенные же в SQLite функции понимают два
формата дат:
- строковый в одном из форматов указанных по ссылке
- числовой, который есть юлиановское число дней (целая часть) и время (дробная часть)

Так вот если там юлиановская дата, то на точное сравнение может влиять ошибка округления.
Т.е. при переводе в строку дата выглядит "как нужно", а на самом деле там ХЗ какие доли
секунды, не влезающие ни в один формат времени.

Так как там дата то храниться ?
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Проблемки с запросом в SQLite (с даты) / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]