Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择最高和最低日期_Php_Mysql_Sql_Date - Fatal编程技术网

Php 选择最高和最低日期

Php 选择最高和最低日期,php,mysql,sql,date,Php,Mysql,Sql,Date,我现在有一个这样的问题: SELECT DATE_FORMAT(`Datum`, '%e %M') AS `DATE`, tag AS `TAG`, value AS `VALUE`, addedTs as `addedTs` FROM dailyMessage INNER JOIN `psttodo-uit` ON dailyMessage.Code = `psttodo-uit`.`Hostess Code` WHERE Code = "010" DATE TAG

我现在有一个这样的问题:

SELECT DATE_FORMAT(`Datum`, '%e %M') AS `DATE`, tag AS `TAG`, value AS `VALUE`, addedTs as `addedTs`
FROM dailyMessage
INNER JOIN `psttodo-uit`
ON dailyMessage.Code = `psttodo-uit`.`Hostess Code`
WHERE Code = "010"
DATE        TAG             VALUE                   addedTs 
4 April     calls           3                       2014-04-04 20:32:39
4 April     endTS           2014-04-04 22:40:55     2014-04-04 22:40:55
4 April     kmstart         32                      2014-04-04 18:34:37
4 April     kmstop          34434334                2014-04-04 18:35:30
4 April     startTS         2014-04-04 18:35:00     2014-04-04 18:35:00
4 April     visits          6                       2014-04-04 22:40:53
5 April     endTS           2014-04-05 01:37:41     2014-04-05 01:37:41
5 April     kmstart         30                      2014-04-05 01:37:41
5 April     startTS         2014-04-05 01:13:25     2014-04-05 01:13:25
5 April     visits          1                       2014-04-05 01:13:23
7 April     authorizations  4                       2014-04-07 22:34:37
7 April     calls           9                       2014-04-07 23:18:28
7 April     endTS           2014-04-07 23:35:32     2014-04-07 23:35:32
7 April     kmstart         42                      2014-04-07 18:10:43
7 April     kmstop          55                      2014-04-07 19:37:42
7 April     startTS         2014-04-07 10:45:18     2014-04-07 10:45:18
7 April     visits          6                       2014-04-07 23:35:31
8 April     endTS           2014-04-08 11:24:28     2014-04-08 11:24:28
8 April     startTS         2014-04-08 11:24:28     2014-04-08 11:24:28
SELECT DATE_FORMAT(`Datum`, '%e %M') AS `DATE`, tag AS `TAG`, value AS `VALUE`, addedTs as `addedTs`, MAX(`afgewerkt tablet datum`) AS `TimeSorE`
FROM dailyMessage
INNER JOIN `psttodo-uit`
ON dailyMessage.Code = `psttodo-uit`.`Hostess Code`
WHERE Code = "010"
我知道你会得到这样的结果:

SELECT DATE_FORMAT(`Datum`, '%e %M') AS `DATE`, tag AS `TAG`, value AS `VALUE`, addedTs as `addedTs`
FROM dailyMessage
INNER JOIN `psttodo-uit`
ON dailyMessage.Code = `psttodo-uit`.`Hostess Code`
WHERE Code = "010"
DATE        TAG             VALUE                   addedTs 
4 April     calls           3                       2014-04-04 20:32:39
4 April     endTS           2014-04-04 22:40:55     2014-04-04 22:40:55
4 April     kmstart         32                      2014-04-04 18:34:37
4 April     kmstop          34434334                2014-04-04 18:35:30
4 April     startTS         2014-04-04 18:35:00     2014-04-04 18:35:00
4 April     visits          6                       2014-04-04 22:40:53
5 April     endTS           2014-04-05 01:37:41     2014-04-05 01:37:41
5 April     kmstart         30                      2014-04-05 01:37:41
5 April     startTS         2014-04-05 01:13:25     2014-04-05 01:13:25
5 April     visits          1                       2014-04-05 01:13:23
7 April     authorizations  4                       2014-04-07 22:34:37
7 April     calls           9                       2014-04-07 23:18:28
7 April     endTS           2014-04-07 23:35:32     2014-04-07 23:35:32
7 April     kmstart         42                      2014-04-07 18:10:43
7 April     kmstop          55                      2014-04-07 19:37:42
7 April     startTS         2014-04-07 10:45:18     2014-04-07 10:45:18
7 April     visits          6                       2014-04-07 23:35:31
8 April     endTS           2014-04-08 11:24:28     2014-04-08 11:24:28
8 April     startTS         2014-04-08 11:24:28     2014-04-08 11:24:28
SELECT DATE_FORMAT(`Datum`, '%e %M') AS `DATE`, tag AS `TAG`, value AS `VALUE`, addedTs as `addedTs`, MAX(`afgewerkt tablet datum`) AS `TimeSorE`
FROM dailyMessage
INNER JOIN `psttodo-uit`
ON dailyMessage.Code = `psttodo-uit`.`Hostess Code`
WHERE Code = "010"
现在我还要从psttodo表中选择最高日期。这就是我想做的:

pstodo-uit
表中有一个
Hostess-code
==我的WHERE子句中的代码
)。datetype
datetime
表中还有一个
afgewerkt tablet datum
字段

日期变化如下:

2014-04-04 11:41:22
2014-04-03 17:20:01
2014-04-01 15:12:08
2014-04-07 22:20:47
2014-04-08 11:21:18
现在,当我进行查询时,我想选择特定日期的最长时间。我这样试过:

SELECT DATE_FORMAT(`Datum`, '%e %M') AS `DATE`, tag AS `TAG`, value AS `VALUE`, addedTs as `addedTs`
FROM dailyMessage
INNER JOIN `psttodo-uit`
ON dailyMessage.Code = `psttodo-uit`.`Hostess Code`
WHERE Code = "010"
DATE        TAG             VALUE                   addedTs 
4 April     calls           3                       2014-04-04 20:32:39
4 April     endTS           2014-04-04 22:40:55     2014-04-04 22:40:55
4 April     kmstart         32                      2014-04-04 18:34:37
4 April     kmstop          34434334                2014-04-04 18:35:30
4 April     startTS         2014-04-04 18:35:00     2014-04-04 18:35:00
4 April     visits          6                       2014-04-04 22:40:53
5 April     endTS           2014-04-05 01:37:41     2014-04-05 01:37:41
5 April     kmstart         30                      2014-04-05 01:37:41
5 April     startTS         2014-04-05 01:13:25     2014-04-05 01:13:25
5 April     visits          1                       2014-04-05 01:13:23
7 April     authorizations  4                       2014-04-07 22:34:37
7 April     calls           9                       2014-04-07 23:18:28
7 April     endTS           2014-04-07 23:35:32     2014-04-07 23:35:32
7 April     kmstart         42                      2014-04-07 18:10:43
7 April     kmstop          55                      2014-04-07 19:37:42
7 April     startTS         2014-04-07 10:45:18     2014-04-07 10:45:18
7 April     visits          6                       2014-04-07 23:35:31
8 April     endTS           2014-04-08 11:24:28     2014-04-08 11:24:28
8 April     startTS         2014-04-08 11:24:28     2014-04-08 11:24:28
SELECT DATE_FORMAT(`Datum`, '%e %M') AS `DATE`, tag AS `TAG`, value AS `VALUE`, addedTs as `addedTs`, MAX(`afgewerkt tablet datum`) AS `TimeSorE`
FROM dailyMessage
INNER JOIN `psttodo-uit`
ON dailyMessage.Code = `psttodo-uit`.`Hostess Code`
WHERE Code = "010"
但后来我发现:

4 April calls   3   2014-04-04 20:32:39 2014-04-09 11:49:42
两个问题:

  • 我只得到一个结果
  • 日期不是4月4日
有人能帮我吗

更新:

我所尝试的:

SELECT DATE_FORMAT(`Datum`, '%e %M') AS `DATE`, tag AS `TAG`, value AS `VALUE`, addedTs as `addedTs`, MAX(`afgewerkt tablet datum`) AS `TimeSorE`
FROM dailyMessage
INNER JOIN `psttodo-uit`
ON dailyMessage.Code = `psttodo-uit`.`Hostess Code`
WHERE Code = "010"
GROUP BY DATE_FORMAT(`Datum`, '%e %M')
给我这个:

4 April calls   3   2014-04-04 20:32:39 2014-04-09 15:46:04
5 April endTS   2014-04-05 01:37:41 2014-04-05 01:37:41 2014-04-09 15:46:04
7 April authorizations  4   2014-04-07 22:34:37 2014-04-09 15:46:04
8 April endTS   2014-04-08 11:24:28 2014-04-08 11:24:28 2014-04-09 15:46:04
但是我需要所有的标签

如果需要将结果集作为单独的行,请尝试以下操作

SELECT A.DATE ,A.CODE,TAG,addedTs,TimeSorE
(
SELECT DATE_FORMAT(`Datum`, '%e %M') AS `DATE`,dailyMessage.Code AS CODE
  MAX(`afgewerkt tablet datum`) AS `TimeSorE`
    FROM dailyMessage
    INNER JOIN `psttodo-uit`
    ON dailyMessage.Code = `psttodo-uit`.`Hostess Code`
    WHERE Code = "010"
    GROUP BY DATE_FORMAT(`Datum`, '%e %M')
) A , dailyMessage B

WHERE
A.CODE = B.CODE AND
A.DATE = B. DATE_FORMAT(`Datum`, '%e %M')

这对我来说绝对有效:

SELECT 
  DATE_FORMAT(`Date`, '%e %M') AS `DATE`, 
  tag AS `TAG`, 
  value AS `VALUE`, 
  addedTs as `addedTs`, 
  MAX(`afgewerkttabletdatum`) AS `TimeSorE`
FROM Test
GROUP BY DATE_FORMAT(`Date`, '%e %M')
以下是一个例子:


我认为这会奏效:

SELECT DATE_FORMAT(`Datum`, '%e %M') AS `DATE`,
       tag AS `TAG`,
       value AS `VALUE`,
       addedTs AS `addedTs`,
       t2.`TimeSorE`
FROM dailyMessage
INNER JOIN (SELECT `Hostess Code`,
                   MAX(`afgewerkt tablet datum`) AS `TimeSorE`
            FROM `psttodo-uit`
            GROUP BY `Hostess Code`) t2 ON dailyMessage.Code = t2.`Hostess Code`
WHERE Code = "010"

使用MAX()和MIN()表示日期您只需要将GROUP BY添加到上一个查询中,例如添加
GROUP BY tag
。仍然会给我一个结果。。。只有带有MAX date…GROUP BY子句的行必须包含SELECT list中的所有列,或者这些列必须在聚合函数中。我错了,我指的是标准SQL,但MySQL扩展了GROUP BY子句,以便在非聚合列上进行分组。这只给了我4行(4,5,7,8)。我需要一天中的所有行,因为它们有不同的标签。因此,对于4月4日,我需要有6行(就像在我的主题中一样),每个MAX_日期相同。我不需要addedTs MAX,而是afgewerkt平板电脑DATA MAX。我添加了它,并将addedTs添加到GROUP BY。我得到的最大时间总是相同的,这是不正确的。从GROUPBY子句中删除除一列以外的所有列,然后重试