gpt4 book ai didi

MySQL Group By 中的日期转换

转载 作者:行者123 更新时间:2023-11-29 08:02:05 24 4
gpt4 key购买 nike

我有以下查询:

SELECT COUNT(*) AS COUNT, DATE(POST_DATE) AS POST_DATE 
FROM POST
WHERE POST_DATE>='?'
GROUP BY DATE(POST_DATE)

POST_DATE实际上是一个DATETIME .

现在,这个查询工作正常,除了我想做一个小调整。我希望早上 6 点之前的所有帖子都算作昨天的帖子。

所以不知何故我需要说:if POST_DATE.hour < 6 -> date(POST_DATE) - 1

但我不确定如何在此查询中执行此操作...或者是否可能。

我的第一个想法是使用日期转换进行另一个查询,然后用计数和 groupby 包装该结果

SQL 向导有什么想法吗?

最佳答案

您希望对第 n+1 天早上 6 点之前的所有帖子进行列表,就像它们来自第 n 天一样。这意味着您希望将它们制成表格,就好像它们是比实际时间戳早六个小时制作的。

这就是你要做的。

SELECT COUNT(*) AS COUNT, 
DATE(POST_DATE - INTERVAL 6 HOUR) AS POST_DATE
FROM POST
WHERE DATE(POST_DATE - INTERVAL 6 HOUR) = ?
GROUP BY DATE(POST_DATE - INTERVAL 6 HOUR)

在所有情况下,您只需将 POST_DATE 偏移六个小时即可。我假设当您为帖子选择特定日期时,您希望它从 06:00 到 06:00 运行,而不是午夜到午夜。

请注意,由于列值上的函数,您的 WHERE 子句无法在 POST_DATE 上使用索引。您可能需要这个。

WHERE POST_DATE >= ? + INTERVAL 6 HOUR
AND POST_DATE < ? + INTERVAL 1 DAY + INTERVAL 6 HOUR

关于MySQL Group By 中的日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23549974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com