【发布时间】:2017-02-19 21:05:42
【问题描述】:
请帮忙!这一直让我发疯。是的,我查看了几十个 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'
确实有效,即它以原始形式成功比较日期,但在引用表列值时却没有。
拜托..我做错了吗?
此外,我已经尝试了 SQL 中 datetime(...)、date(...) 的所有排列,但均无济于事。我也尝试过使用 ... BETWEEN ... AND ...,但没有帮助。
如果有人能解决这个问题,请提前感谢。
【问题讨论】:
-
从交易中选择不同的长度(交易日期);检查不可见的字符。检查空格是否真的是一个选项卡。我自己将 sqlite 用于此类日期时间的事情,尽管我的格式是 yyyymmdd-hh:mi:ss。
-
嗨,我得到 1 个结果:length(transactiondate) 21
-
这与 19 不同。隐形字符理论变得更加强大。是换行符吗?额外的空间?也许可以用 UPDATE 和 SUBSTR 修复数据。
-
但是“'2010-02-19 00:00:00'”的长度是21,包括单引号
-
作为诊断,尝试使用
date函数将存储在表中的一些值转换为“内部”表示,然后再返回“看看会发生什么”?
标签: string sqlite date format comparison