gpt4 book ai didi

php - 获取给定日期范围的最大值并按天分组 PHP MYSQL

转载 作者:行者123 更新时间:2023-11-29 21:04:21 25 4
gpt4 key购买 nike

我在这方面遇到了很多麻烦。我试图在给定范围内获得每天的最大值。但当我加载查询结果时,我的计数列中始终出现空白值。

<?php

include("dbconnect.php");

$link=Connection();


$data1 = '2016-04-29 00:00:00';
$data2 = '2016-05-02 00:00:00';



$result = mysql_query(
"
SELECT DATE(orderDate), MAX(Count)
FROM testLocation
WHERE orderDate
BETWEEN '$data1%' AND '$data2%'
GROUP BY DATE(orderDate)
"
,$link
);
?>

最佳答案

这里有一些需要注意的事情。

首先,日期常量中的 % 符号不应该出现。这些仅适用于 LIKE 运算符。

其次,BETWEEN 运算符对于 DATETIME 值效果不佳,因为它等效于:

     WHERE orderDate >= '$data1'
AND orderDate <= '$data2' -- wrong!

这排除了结束日期午夜之后的所有内容。 <=DATETIME 的比较是错误的。

你应该使用这个:

     WHERE orderDate >= '$data1'
AND orderDate < '$data2' + INTERVAL 1 DAY

它包括您给出的结束日期之后当天午夜 < 之前的所有内容,但不包括该日期。这意味着它将包含日期范围最后一天的所有内容,这可能就是您想要的。

第三,我建议您为结果集中的列指定别名列名称。这将使 php 代码更容易检索它们。

               SELECT DATE(orderDate) orderDate, 
MAX(Count) maxCount
FROM testLocation
WHERE orderDate >= '$data1'
AND orderDate < '$data2' + INTERVAL 1 DAY
GROUP BY DATE(orderDate)

第四,如果您的 testLocation 表中根本没有特定日期的记录,则此查询的结果集将忽略该日期。

第五(其他人在评论中提到了这一点)mysql_ API 对于您的 php 编程来说不是一个好的选择;这是不安全的。

关于php - 获取给定日期范围的最大值并按天分组 PHP MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36954121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com