gpt4 book ai didi

mysql - 所选日期之间1年的任何日期MYSQL查询

转载 作者:行者123 更新时间:2023-11-29 23:36:30 24 4
gpt4 key购买 nike

我正在为 1 年前注册的用户构建一份报告。

我想在给定时间运行此报告。因此,任何在两个日期之间已成为成员(member)一年的人。

这是一个在 date1 和 date2 之间提交的表单。

所以,如果我想看看在 01-08-2014 和 01-10-2014 之间成为成员(member)的人作为例子。在这些日期之间曾经是或曾经是成员(member)的任何人都会显示在列表中。

到目前为止,我有这个,但它没有显示任何记录:

SELECT * 
FROM `nfw_users`
WHERE DATE(date_join) BETWEEN 2012-05-20
AND 2012-10-20 AND date_join >= DATE_SUB(NOW(),INTERVAL 1 YEAR)

最佳答案

查询中的文字 2012-05-202012-10-20 可能在“日期”上下文中计算为 NULL。 (这是有效的语法,但可能不是您想要的。)

日期文字应该用单引号括起来,例如

    ... BETWEEN '2012-05-20' AND '2012-10-20' 
^ ^ ^ ^
<小时/>

截至现在('2014-10-14 06:36:36'),这个谓词:

date_join >= DATE_SUB(NOW(),INTERVAL 1 YEAR)

相当于:

date_join >= '2013-10-14 06:36:36'

这意味着不会返回 date_join 小于该值的行,因此无法返回任何行,因为没有 date_join 值大于 '2013-10-14' 也小于或等于 '2012-10-20'。查询中的谓词使得任何行都不可能匹配。

您的规范有点含糊。一些示例数据以及您期望返回哪些行将有助于澄清规范。您想要返回在给定日期范围内成为成员(member)整整一年或至少一年的个人的行吗?

要返回在两个特定日期之间的某个时间达到一周年纪念日的“成员”的行:

WHERE date_join >= '2013-05-20' + INTERVAL -1 YEAR
AND date_join < '2013-10-20' + INTERVAL 1 DAY + INTERVAL -1 YEAR

要返回在两个日期之间已经(或本来是)至少一年的成员的“成员”的行,我不认为需要两个边界,而是针对单个较低边界进行检查绑定(bind)日期就足够了。

关于mysql - 所选日期之间1年的任何日期MYSQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26353142/

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