我SQLite
数据库中的每条记录都包含一个字段,其中包含一个以格式Date
存储string
的'yyyy-MM-dd HH:mm:ss'
。
是否可以查询数据库以获取包含最近日期的记录?
Answers:
你可以这样
SELECT * FROM Table ORDER BY date(dateColumn) DESC Limit 1
datetime()
的这一翻译date()
对我来说,用这种方式可以解决我的问题
select * from Table order by datetime(datetimeColumn) DESC LIMIT 1
由于我将其存储为日期时间而不是日期列
在我的情况下,一切正常,而无需 强制转换列为“ date”。只需使用这样的双引号指定列名:
SELECT * FROM 'Repair' ORDER BY "Date" DESC;
我认为SQLite本身可以进行类型转换,但是当我尝试自己“投射”日期列时,它不起作用。而且没有错误消息。
Dat
列时,它仍在更新日期之后对其进行排序,例如 i.ibb.co/Qv1zKQC/sqlitedatetime.png
如果您进行大量日期排序/比较,则可以通过将时间存储为刻度而不是字符串来获得更好的结果,这里显示了如何通过以下方式获取刻度中的“现在”:
((strftime('%s', 'now') - strftime('%S', 'now') + strftime('%f', 'now')) * 1000)
(请参阅https://stackoverflow.com/a/20478329/460084)
然后很容易进行排序,比较等...
NOW
的是存储值,而不是存储的值,所以这并不是很有帮助... 3)似乎有更好的转换(如公认的答案),不需要手动转换。您的答案比其他任何答案有什么好处?
这将同时适用于日期和时间
SELECT *
FROM Table
ORDER BY
julianday(dateColumn)
DESC Limit 1