如何使查询仅从数据库中检索时间等于“今天”的记录。我尽可能长时间地存储我的日期。
例如: DateColumn(我的列的名称)和我的表的名称是 MyTable
1360054701278(格林威治标准时间 2013 年 2 月 5 日星期二上午 8:58:21) 1359795295000(格林威治标准时间 2013 年 2 月 2 日星期六上午 8:54:55)
那么我应该如何对该示例进行查询以检索第一条记录(因为它是等于今天的日期)?
任何建议将不胜感激。谢谢
很抱歉没有看到,您的问题是在您的列中保存的额外毫秒。
解决方案是通过除法删除它们;-)
SELECT * FROM MyTable WHERE date(datetime(DateColumn / 1000 , 'unixepoch')) = date('now')
使用范围进行最快查询。您想避免转换为比较。
SELECT *
FROM My Table
WHERE DateColumn BETWEEN JulianDay('now') AND JulianDay('now','+1 day','-0.001 second')
注意:我刚刚意识到您的日期没有存储为 SQLite 原生支持的 Julian Dates。这个概念仍然是相同的,但您需要使用自己的转换函数来存储日期的任何格式。