我想运行一个查询,显示从午夜开始显示的前一天每小时的平均温度值。
该表的列号为UpdateOn,格式为2018-01-10 13:56:06.000,时间戳为P1Temp,其中包含温度数据。大约每分钟都会在表格中输入数据。
我有以下SQL查询显示数据,但仅限于运行命令之前的24小时。这可以在两个日历日内分割数据,具体取决于命令运行的时间,当我希望它只返回前一天的每小时时,无论命令何时运行。
<script>
var cc = <?php echo $_SESSION['abc'];?>
$(document).ready(function() {
if(cc == "abc"){
$('.content').load("main.php");}
else{
$('.content').load("login.php");}
}
});</script>
答案 0 :(得分:1)
从MSDN documentation开始,这是今天午夜的表达式:
DATEADD(Day, 0, DATEDIFF(Day, 0, GetDate()))
如果我正确地阅读了您的问题,您希望定位从昨天午夜开始的24小时,但不包括今天午夜。下面的查询几乎与您已有的查询相同,只是WHERE
子句强加了您想要的范围。
SELECT
UpdateOn = DATEADD(hh, DATEPART(hh, UpdateOn),
CAST(CAST(UpdateOn AS DATE) AS DATETIME)),
ROUND(AVG(P1Temp), 1)
FROM TABLE
WHERE
UpdateOn >=
DATEADD(day, -1, DATEADD(Day, 0, DATEDIFF(Day, 0, GetDate()))) AND
UpdateOn < DATEADD(Day, 0, DATEDIFF(Day, 0, GetDate()))
GROUP BY
DATEADD(hh, DATEPART(hh, UpdateOn),
CAST(CAST(UpdateOn AS DATE) AS DATETIME));