【问题标题】:How to select the rows with maximum timestamp for each month?如何选择每个月具有最大时间戳的行?
【发布时间】:2021-10-31 21:52:02
【问题描述】:

如何选择每个月的最大时间戳?

【问题讨论】:

  • SELECT MAX(timestamp) ... GROUP BY month ...
  • SELECT ... WHERE cust_id = 756 and end_date is null
  • 您的问题确实缺少有用的信息
  • 欢迎,为了改善您在 SO 上的体验,请 take the tour 并阅读 how to askOn Topic question,然后查看 Question Check listperfect question 以及如何创建 @987654326 @
  • 今后请不要使用截屏来显示数据。在您的问题中包含缩进四个空格的数据文本。

标签: mysql sql datetime timestamp history-tables


【解决方案1】:

我认为这个查询可以完成这项工作。

SELECT 
YEAR(START_DATE), 
MONTH(START_DATE), 
MAX(IFNULL(END_DATE, '9999-12-31 23:59:59'))
GROUP BY YEAR(START_DATE), MONTH(START_DATE)

【讨论】:

  • 为什么是 START_DATE,而不是 END_DATE,或者,例如,它们之间的中间值?
  • 从问题中的示例数据中我得出结论,月份是通过 START_DATE 定义的。
【解决方案2】:

如果索引正确,这将非常有效。

SELECT LAST_DAY(start_date) month_ending,
       MAX(end_date) max_end_date
  FROM tbl
 GROUP BY LAST_DAY(start_date)

【讨论】:

  • 对不起,我的意思是我想选择每个月有最新记录的行。我以为我可以使用“LAST_DAY”,但它只返回每个月的最后一天
猜你喜欢
  • 2015-12-09
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
相关资源
最近更新 更多