我正在寻找一种从where语句中选择一整天的数据的方法。时间戳处于unix时间,例如(1406045122)。我想选择今天的unix时间范围的日期,并找到今天添加的所有食物。预先感谢。这是我写的代码。我不确定我应该把什么放在(?????)部分。我知道这与每天60 * 60 * 24 = 86400秒有关,但我不太清楚如何实现这一点。
Select timestamp,food from table1 where timestamp = ( ????? );
答案 0 :(得分:1)
Select timestamp,food
FROM table1
WHERE timestamp > :ts
AND timestamp <= (:ts + 86400);
用开始的timstamp替换:ts,你可以过滤一整天的数据
此选择查询会为您提供当前时间戳(可能会有更高效的时间戳,我不经常使用sqlite)
select strftime("%s", current_timestamp);
您可以在此处找到有关他们的更多信息:http://www.tutorialspoint.com/sqlite/sqlite_date_time.htm
使用strftime()函数,结合date()函数,我们可以编写以下查询,不需要任何手动编辑。它将返回在时间戳上过滤的记录&gt;今天开始&amp;时间戳&lt; =今天结束。
Select timestamp,food
FROM table1
WHERE timestamp > strftime("%s", date(current_timestamp))
AND timestamp <= (strftime("%s", date(current_timestamp)) + 86400);
答案 1 :(得分:0)
您的里程可能取决于您的SQL版本,但例如在MySQL上,您可以将搜索指定为BETWEEN
两个日期,这通常是指每个日期的午夜。所以
SELECT * FROM FOO WHERE T BETWEEN '2014-07-01' AND '2014-07-02';
在2014年7月1日的任何地方选择带有时间戳的任何内容。如果您想使其可读,您甚至可以使用ADDDATE函数。所以你可以做类似
的事情SET @mydate = DATE(T);
SELECT * FROM FOO WHERE T BETWEEN @mydate AND ADDDATE(@mydate, 1);
第一行应将您的时间戳截断为00:00:00。第二行应SELECT
仅记录该日期。