我有一张有最新天气参数的table。我需要在每天早上7点运行一个脚本,将之前24小时(7点-7点)的降雨量相加。
日期列的表头为logdatetime,格式为yyyy-mm-dd hh:mm:ss。“降雨”列的标题为TodaySrainsOfar,格式为###
获取今天降雨的粗略代码应该是:
Select TodayRainSoFar
From 'monthly'
WHERE LogDateTime Like '(current date, but I can't get anything to work here) 07:00:00'
从早上7点到晚上11点59分获取昨天降雨的粗略代码应该是这样的:
Select TodayRainSoFar
From 'monthly'
WHERE LogDateTime Like '(current date minus 1, but I can't get anything to work here) 23:59:00'
minus
Select TodayRainSoFar
From 'monthly'
WHERE LogDateTime Like '(current date - 1, but I can't get anything to work here) 07:00:00'
请让我知道是否还有其他需要帮助的地方。我知道基本的代码(当然可以谷歌),但一切关于这个数据库是自动化的,不是我设置的。
2条答案
按热度按时间qgelzfjb1#
要得到总数,请使用
sum()
聚合函数。要限制记录的时间戳,请使用date_add()
. 当天可以通过curdate()
.bkhjykvo2#
应该在早上7点给你这样的约会:“2018-07-22 07:00:00”
要获得前一天,只需按以下方式进行约会:
这应该是‘2018-07-21 07:00:00’——对我来说是这样。然后,执行相同的代码,但将“23:59:59”替换为“07:00:00”。如果要求相等,则应该使用“=”运算符而不是“like”。例如“where logdatetime=(concat\u ws('',current\u date(),'07:00:00'))。
如果你想要昨天早上7点到晚上11点59分的雨,我会用一个“中间”,用这样的方式:
看看这对你有用吗。哦,如果可能的话,我想再增加一个技巧:在where子句中使用列函数(比如concat和date\u sub)并不是您想要对大型数据集执行的操作,因为mysql优化器实在无法找出最佳访问路径。在这种情况下,我想会很好的。