gpt4 book ai didi

MySQL - 每月查找同一天

转载 作者:行者123 更新时间:2023-11-29 00:54:42 27 4
gpt4 key购买 nike

我创建了一个系统,每月根据用户注册的时间计算数据。

我将每天运行一个 cron 作业来获取所有需要计算信息的用户,我想获取每天的所有用户。

如果用户都注册了类似2011-01-01

一个简单的查询会发现(如果昨天是该期间的末尾):

SELECT `user_id` 
FROM `table`
WHERE DAY( `date_created` ) = DAY( DATE_SUB( CURRENT_DATE(), INTERVAL 1 DAY ) )

如果他们在 2011-03-31 上注册,情况会变得更加复杂

我可以使用什么查询来确保在 2011-04-30 找到它们?

我猜是这样的

SELECT `user_id`
FROM `table`
WHERE
DAY( `date_created` ) = DAY( DATE_SUB( CURRENT_DATE(), INTERVAL 1 DAY ) )
OR DAY( DATE_SUB( CURRENT_DATE(), INTERVAL 1 DAY ) ) < DAY( `date_created` )
AND LAST_DAY( DATE_SUB( CURRENT_DATE(), INTERVAL 1 DAY ) ) = DATE_SUB( CURRENT_DATE(), INTERVAL 1 DAY )

这似乎不是很有效,我也不知道它是否有效(尽管我怀疑它有效)。

有试过的方法吗?或者有更好的方法吗?

最佳答案

您需要做的就是检查是否是本月的第一天,如果是则进行>= 比较,否则进行= 比较。

WHERE IF(DAY(CURRENT_DATE()) = 1,
DAY( `date_created` ) >= DAY(DATE_SUB( CURRENT_DATE(), INTERVAL 1 DAY )),
DAY( `date_created` ) = DAY(DATE_SUB( CURRENT_DATE(), INTERVAL 1 DAY ))
)

因此在 3 月 1 日,它将更新 28 日或之后(非闰年)注册的用户。

关于MySQL - 每月查找同一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6674206/

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