10

如何使查询仅从数据库中检索时间等于“今天”的记录。我尽可能长时间地存储我的日期。

例如: DateColumn(我的列的名称)和我的表的名称是 MyTable

1360054701278(格林威治标准时间 2013 年 2 月 5 日星期二上午 8:58:21) 1359795295000(格林威治标准时间 2013 年 2 月 2 日星期六上午 8:54:55)

那么我应该如何对该示例进行查询以检索第一条记录(因为它是等于今天的日期)?

任何建议将不胜感激。谢谢

4

2 回答 2

13

很抱歉没有看到,您的问题是在您的列中保存的额外毫秒。

解决方案是通过除法删除它们;-)

SELECT * FROM MyTable WHERE date(datetime(DateColumn / 1000 , 'unixepoch')) = date('now') 
于 2013-02-05T14:59:36.133 回答
2

使用范围进行最快查询。您想避免转换为比较。

SELECT *
FROM   My Table
WHERE  DateColumn BETWEEN JulianDay('now') AND JulianDay('now','+1 day','-0.001 second')

注意:我刚刚意识到您的日期没有存储为 SQLite 原生支持的 Julian Dates。这个概念仍然是相同的,但您需要使用自己的转换函数来存储日期的任何格式。

于 2013-02-05T14:30:29.913 回答