首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于月份的MySQL查询结果

基于月份的MySQL查询结果
EN

Stack Overflow用户
提问于 2014-09-17 15:30:38
回答 1查看 130关注 0票数 0

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

例如,需要获取以下查询并修改其以仅提取在“一月”月份关闭的记录。这有可能发生在下面吗?无法想象..。

代码语言:javascript
运行
复制
<?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
";

任何帮助都将得到大力支持,啤酒也将被拖欠:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-17 15:40:40

若要在当前月份DATE中选择DATETIMETIMESTAMP值,请执行以下操作。

代码语言:javascript
运行
复制
WHERE timestampval >= DATE(DATE_FORMAT(NOW(), '%Y-%m-01'))
  AND timestampval <  DATE(DATE_FORMAT(NOW(), '%Y-%m-01')) + INTERVAL 1 MONTH

对于上个月的,您可以这样做:

代码语言:javascript
运行
复制
WHERE timestampval >= DATE(DATE_FORMAT(NOW(), '%Y-%m-01')) - INTERVAL 1 MONTH
  AND timestampval <  DATE(DATE_FORMAT(NOW(), '%Y-%m-01')) 

对于前一年的,您可以这样做:

代码语言:javascript
运行
复制
WHERE timestampval >= DATE(DATE_FORMAT(NOW(), '%Y-01-01')) - INTERVAL 1 YEAR
  AND timestampval <  DATE(DATE_FORMAT(NOW(), '%Y-01-01')) 

可以按月汇总(汇总)表,如下所示:

代码语言:javascript
运行
复制
SELECT 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'))

这一切都有效,因为这个表达式:

代码语言:javascript
运行
复制
DATE(DATE_FORMAT(sometime, '%Y-%m-01'))

获取任意sometime值,并返回发生时间戳的月份的第一天。类似地,

代码语言:javascript
运行
复制
DATE(DATE_FORMAT(sometime, '%Y-01-01'))

返回一年的第一天。然后,您可以使用日期算术(如+ INTERVAL 1 MONTH )来操作最初几天的月份或年份。

这里有一个关于这个主题的更完整的文章。http://www.plumislandmedia.net/mysql/sql-reporting-time-intervals/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25894682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档