SQL。选择Unixtime一整天

时间:2014-07-22 18:04:40

标签: sql sqlite unix time

我正在寻找一种从where语句中选择一整天的数据的方法。时间戳处于unix时间,例如(1406045122)。我想选择今天的unix时间范围的日期,并找到今天添加的所有食物。预先感谢。这是我写的代码。我不确定我应该把什么放在(?????)部分。我知道这与每天60 * 60 * 24 = 86400秒有关,但我不太清楚如何实现这一点。

Select timestamp,food from table1 where timestamp = ( ????? );

2 个答案:

答案 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仅记录该日期。