SQLite日期字符串比较。相同格式不起作用

时间:2017-02-19 21:05:42

标签: string sqlite date format comparison

请帮忙!这让我疯了。是的我已经查看了类似问题的数十个Stack Overflow答案,他们都说“你的日期应该采用一致的格式”。

我的SQLite日期的所有都以以下字符串格式存储:

'yyyy-MM-dd HH:mm:ss'

我正在尝试进行日期比较,但没有工作。例如:

SELECT         transactiondate
FROM           transactions 
WHERE          transactiondate >= '2010-02-19 00:00:00'

不起作用..我收到了0条记录。

即使我在没有WHERE子句的情况下运行它,我也会得到返回的日期字符串,如:

'2017-02-25 00:00:00'

事实上,只需做:

SELECT         transactiondate
FROM           transactions 
WHERE          '2017-02-25 00:00:00' >= '2010-02-19 00:00:00'

是否正常工作,即它以原始形式成功比较日期,但在引用表格列值时则没有。

请...... WTF我做错了吗?

另外,我在SQL中尝试了datetime(...),date(...)的每个排列都无济于事。我也尝试过使用...... BETWEEN ......和...,它没有帮助。

如果有人能解决这个问题,请提前致谢。

1 个答案:

答案 0 :(得分:0)

好的,这不是答案。但是在SO中你不能在评论中做这种事情。

我无法复制你所拥有的条件。代码,特别是SELECT,可以很好地从Python执行。

>>> import sqlite3
>>> conn = sqlite3.connect(':memory:')
>>> cur = conn.cursor()
>>> cur.execute('CREATE TABLE transactions (transactionsdate string)')
<sqlite3.Cursor object at 0x000000000531CCE0>
>>> cur.execute('''INSERT INTO transactions VALUES ('2010-02-10 00:00:00')''')
<sqlite3.Cursor object at 0x000000000531CCE0>
>>> cur.execute('''INSERT INTO transactions VALUES ('2017-02-10 00:00:00')''')
<sqlite3.Cursor object at 0x000000000531CCE0>
>>> list(cur.execute("SELECT * from transactions where transactionsdate >= '2010-02-19 00:00:00'"))
[('2017-02-10 00:00:00',)]
>>> list(cur.execute("SELECT * from transactions"))
[('2010-02-10 00:00:00',), ('2017-02-10 00:00:00',)]

在黑暗中刺入:你可以将字段的内容转储到文本文件中并使用(例如)Notepad ++进行检查,这样可以查看干扰的非打印字符吗?