请帮忙!这让我疯了。是的我已经查看了类似问题的数十个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 ......和...,它没有帮助。
如果有人能解决这个问题,请提前致谢。
答案 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 ++进行检查,这样可以查看干扰的非打印字符吗?