2010-05-13 3 views
1

Регистрация является DateTime тип данных столбца в базе данных и даты сохраняются как '12/05/2010 15:54:32' Это мой запрос:Как выбрать из datetime в sqlite?

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 
+0

Что в 59:59 первый 59: 59 представляют? – bernie

+0

Извините, я исправил его. –

ответ

2

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

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',)] 
+0

Технически это то, что я использую. Я тестировал qhe запрос в SQLite Administrator без каких-либо результатов. Объединенное поле - это дата и время, и sqlite говорит, что данные должны сохраняться как строки. –

+0

И ts - это тип данных «text» или «datetime»? –

+0

@Sein: SQLite не имеет типа данных 'datetime'. Даты хранятся в виде текста. – bernie

1

Если вы хранения дат в виде строк, вы должны использовать 'YYYY-MM-DD HH: MM: SS' формат. Они будут сортироваться в хронологическом порядке и иметь дополнительную выгоду от принятия в функциях даты и времени SQLite.

Смежные вопросы