我想从前一个小时的最后一个记录中提取la值。
该表具有:DateHour(TIMESTAMP)和Energy(FLOAT)

Id________DateHour_____________Energy
..........................................................................
18350____2019-10-05 18:57:44____231.38
18351____2019-10-05 18:59:45____231.33
..........................................................................
..........................................................................
18400____2019-10-05 19:51:00_____123.35


现在是19:51:15。

我想在上面的示例中选择ID为18351的值。即使一天变化,我也想工作。

绑:

select *
from table1
where DateHour> (unix_timestamp()*1000 - 60*60*1000);


不好。

最佳答案

假设您使用的是MySQL(代码如下所示):

select t1.*
from table1 t1
where datehour >= cast(date_format(now() - interval 1 hour, '%Y-%m-%d %h:00') as datetime) and
      datehour < cast(date_format(now(), '%Y-%m-%d %H:00') as datetime)
order by datehour desc
limit 1;


MySQL没有便利的功能(如Postgres中的date_trunc())将日期/时间值四舍五入为特定单位。在这种情况下,它为此使用字符串转换。

注意,查询的结构使得可以在datehour上使用索引。如果索引可用并且表很大,那很重要。

09-12 15:30