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