如何在SQL中选择日期的第一个和最后一个值?

时间:2017-05-19 04:12:02

标签: php mysql sql postgresql

我有以下查询:

$sql  = "SELECT C_Date, C_Time, C_Unique FROM tEnter";
$sql .= " WHERE C_Date >= '" . $_GET['date'] . "'";

根据C_Time按升序排列。

让我们说某个特定日期我有时会在8:30,9:30,10:30和11:30有四个结果。如何将上述查询更改为仅在我的结果中获得8:30和11:30?

P.S。将有多个日期,每个日期将有一次或多次。

3 个答案:

答案 0 :(得分:0)

首先,您应该更改查询以避免SQL注入。查看prepareexecute语句。

离开我想,如果结果将按时间排序,你可以得到第一个和最后一个这样的值:

$first = reset($array);//to get the first value
$last = end($array);//to get the last one

答案 1 :(得分:0)

使用 mysql min() max()来选择第一个和最后一个日期

SELECT C_Date, MIN(C_Time) as start_time,MAX(C_Time) as end_time, C_Unique FROM tEnter WHERE DATE(C_Date) = **'DYNAMIC DATE'**

注意: - 根据您的逻辑更改“DYNAMIC DATE”。

希望它对你有用。

答案 2 :(得分:0)

您必须自我加入才能找到MAXMIN日期

 $sql  = " SELECT t.C_Date, t.C_Time, t.C_Unique FROM tEnter as t ";
 $sql .= " JOIN (SELECT  MAX(C_Time) as formax, MIN(C_Time) as formin FROM tEnter where C_Date >= '" . $_GET['date'] . "') as tmp ON t.C_Time= tmp.formin OR t.C_Time= tmp.formax ";
 $sql .= " WHERE t.C_Date >= '" . $_GET['date'] . "'";