Как выбрать из datetime в sqlite? - PullRequest
1 голос
/ 13 мая 2010

Присоединился к столбцу типа данных datetime в базе данных и даты сохраняются как '12/05/2010 15:54:32' Это мой запрос:

SELECT * 
FROM users 
WHERE joined BETWEEN '12/05/2010 00:00:00' AND '12/05/2010 23:59:59' 
ORDER BY id ASC

Но это не работает. Он не возвращает строк.

Так, как я могу получить их?


Решение:

SELECT * 
FROM users 
WHERE joined BETWEEN '2010-05-05 00:00:00' AND '2010-05-12 23:59:59'
ORDER BY id ASC

Ответы [ 2 ]

2 голосов
/ 13 мая 2010

Я понимаю, что это не ответ,
но, возможно, это поможет сузить суть проблемы.

Edit:
Это также работает в оболочке:

sqlite> create table t (ts);
sqlite> insert into t values ('12/05/2010 15:54:32');
sqlite> SELECT * 
   ...> FROM t 
   ...> WHERE ts 
   ...> BETWEEN '12/05/2010 00:00:00' AND '12/05/2010 23:59:59';
12/05/2010 15:54:32

В Python у меня работает следующее:

>>> import sqlite3
>>> conn = sqlite3.connect(":memory:")
>>> c = conn.cursor()
>>> c.execute("CREATE TABLE t (ts)")
<sqlite3.Cursor object at 0x7fe88ebbac90>
>>> conn.commit()
>>> c.execute("INSERT INTO t VALUES ('12/05/2010 15:54:32');")
<sqlite3.Cursor object at 0x7fe88ebbac90>
>>> conn.commit()
>>> c.execute("""
SELECT * 
FROM t 
WHERE ts 
BETWEEN '12/05/2010 00:00:00' AND '12/05/2010 23:59:59'
""").fetchall()
[(u'12/05/2010 15:54:32',)]
1 голос
/ 13 мая 2010

Если вы храните даты в виде строк, вы должны использовать формат «ГГГГ-ММ-ДД ЧЧ: ММ: СС». Они будут отсортированы в хронологическом порядке, и их дополнительное преимущество будет заключаться в функциях даты и времени SQLite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...