Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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 基于月份的MySQL查询结果_Php_Mysql_Datetime - Fatal编程技术网

Php 基于月份的MySQL查询结果

Php 基于月份的MySQL查询结果,php,mysql,datetime,Php,Mysql,Datetime,我真的需要一些帮助。对MySQL不友好,在过去的几天里混过去了,但现在卡住了 例如,需要接受下面的查询并修改它,以便只提取1月份关闭的记录。从下面可以吗?我想不出来 <?php $recentlyClosedDays = 7; ?> $query1 = " SELECT HD_TICKET.ID as ID, HD_TICKET.TITLE as Title, HD_STATUS.NAME AS Status, HD_PRIORITY.NAME AS Priority,

我真的需要一些帮助。对MySQL不友好,在过去的几天里混过去了,但现在卡住了

例如,需要接受下面的查询并修改它,以便只提取1月份关闭的记录。从下面可以吗?我想不出来

<?php
$recentlyClosedDays = 7;
?>


$query1 = "
SELECT HD_TICKET.ID as ID, 
HD_TICKET.TITLE as Title, 
HD_STATUS.NAME AS Status, 
HD_PRIORITY.NAME AS Priority, 
HD_TICKET.CREATED as Created, 
HD_TICKET.MODIFIED as Modified, 
S.FULL_NAME  as Submitter, 
O.FULL_NAME  as Owner, 
HD_TICKET.RESOLUTION as Resolution,
(SELECT COMMENT FROM HD_TICKET_CHANGE WHERE HD_TICKET_ID=HD_TICKET.ID ORDER BY TIMESTAMP DESC LIMIT 1) as Comment,
HD_TICKET.CUSTOM_FIELD_VALUE0 as Type  
FROM HD_TICKET  
JOIN HD_STATUS ON (HD_STATUS.ID = HD_TICKET.HD_STATUS_ID) 
JOIN HD_PRIORITY ON (HD_PRIORITY.ID = HD_TICKET.HD_PRIORITY_ID) 
LEFT JOIN USER S ON (S.ID = HD_TICKET.SUBMITTER_ID) 
LEFT JOIN USER O ON (O.ID = HD_TICKET.OWNER_ID)
WHERE (HD_TICKET.HD_QUEUE_ID = $mainQueueID)
AND (HD_STATUS.STATE like '%Closed%')  
AND (HD_TICKET.TIME_CLOSED >= DATE_SUB(NOW(), INTERVAL $recentlyClosedDays DAY))
ORDER BY HD_TICKET.TIME_CLOSED DESC
";
我们将非常感谢您的帮助,并感谢您的帮助:

要选择当前月份的日期、日期时间或时间戳值,请执行以下操作

WHERE timestampval >= DATE(DATE_FORMAT(NOW(), '%Y-%m-01'))
  AND timestampval <  DATE(DATE_FORMAT(NOW(), '%Y-%m-01')) + INTERVAL 1 MONTH
这一切都有效,因为此表达式:

DATE(DATE_FORMAT(sometime, '%Y-%m-01'))
获取任意的“某个时间”值,并返回时间戳出现的月份的第一天。同样地

DATE(DATE_FORMAT(sometime, '%Y-01-01'))
返回一年中的第一天。然后,您可以使用日期算术,如+INTERVAL 1 MONTH,来处理月份或年份的第一天


这里有一篇关于这个主题的更完整的文章

请将您的代码缩小到与您的问题相关的部分,这样就不需要通读所有内容:也许,在伪代码中:HD_TICKET.TIME_CLOSED>=DATE_subtartofjanur,INTERVAL 365天,HD_TICKET.TIME_CLOSEDSELECT DATE(DATE_FORMAT(timestampval , '%Y-%m-01')) AS month_starting, SUM(whatever) AS total, COUNT(whatever) AS transactions FROM table GROUP BY DATE(DATE_FORMAT(timestampval , '%Y-%m-01'))
DATE(DATE_FORMAT(sometime, '%Y-%m-01'))
DATE(DATE_FORMAT(sometime, '%Y-01-01'))