Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何获得未来12个日期_Mysql_Date - Fatal编程技术网

Mysql 如何获得未来12个日期

Mysql 如何获得未来12个日期,mysql,date,Mysql,Date,我有一段代码,告诉你什么时候联系不到某个联系人,并在日历上突出显示这一天。i、 e.如果您最后一次联系此人是在昨天,那么在下个月页面上,一个月后将显示突出显示的一天 我想做的是每月做一次,直到一年。所以在上一个例子中,如果我在突出显示的日期之后移动一个月,它将“在两个月内没有联系”,三个月,四个月,因此第四个月到12个月 以下是我现在用于“一个月内未联系”查询的内容: SELECT DATE_FORMAT(DATE(DATE_ADD(date, INTERVAL 1 MONTH)), '%Y-%

我有一段代码,告诉你什么时候联系不到某个联系人,并在日历上突出显示这一天。i、 e.如果您最后一次联系此人是在昨天,那么在下个月页面上,一个月后将显示突出显示的一天

我想做的是每月做一次,直到一年。所以在上一个例子中,如果我在突出显示的日期之后移动一个月,它将“在两个月内没有联系”,三个月,四个月,因此第四个月到12个月

以下是我现在用于“一个月内未联系”查询的内容:

SELECT DATE_FORMAT(DATE(DATE_ADD(date, INTERVAL 1 MONTH)), '%Y-%c-%d') AS overDate
    FROM contact_method_history
WHERE DATE(DATE_ADD(date, INTERVAL 1 MONTH)) = '$SQLDate'
AND entityRef = ".$this->entityId."
ORDER BY date DESC
LIMIT 1
$this->entityId可以是153或9045,它只是对联系人的引用


$SQLDate的格式是“2012-05-09”。

我不同意这样的评论:如果执行循环,那么将运行12个查询,而不是1个,这会降低性能。另一方面,一个多功能查询的语句并不简单:

SELECT date
, i.m
, DATE_FORMAT(DATE(DATE_ADD(cmh.date, INTERVAL i.m MONTH)), '%Y-%c-%d') AS overDate
FROM contact_method_history AS cmh
, (
    SELECT 1 as m
    UNION ALL SELECT 2 as m
    UNION ALL SELECT 3 as m
    UNION ALL SELECT 4 as m
    UNION ALL SELECT 5 as m
    UNION ALL SELECT 6 as m
    UNION ALL SELECT 7 as m
    UNION ALL SELECT 8 as m
    UNION ALL SELECT 9 as m
    UNION ALL SELECT 10 as m
    UNION ALL SELECT 11 as m
    UNION ALL SELECT 12 as m
) AS i
WHERE ( DATE(DATE_ADD(cmh.date, INTERVAL i.m MONTH)) = '$SQLDate' )
AND (entityRef = ".$this->entityId.")
GROUP BY i.m, DATE(DATE_ADD(cmh.date, INTERVAL i.m MONTH))

我不同意这样的评论:如果执行循环,那么将运行12个查询,而不是1个,这会降低性能。另一方面,一个多功能查询的语句并不简单:

SELECT date
, i.m
, DATE_FORMAT(DATE(DATE_ADD(cmh.date, INTERVAL i.m MONTH)), '%Y-%c-%d') AS overDate
FROM contact_method_history AS cmh
, (
    SELECT 1 as m
    UNION ALL SELECT 2 as m
    UNION ALL SELECT 3 as m
    UNION ALL SELECT 4 as m
    UNION ALL SELECT 5 as m
    UNION ALL SELECT 6 as m
    UNION ALL SELECT 7 as m
    UNION ALL SELECT 8 as m
    UNION ALL SELECT 9 as m
    UNION ALL SELECT 10 as m
    UNION ALL SELECT 11 as m
    UNION ALL SELECT 12 as m
) AS i
WHERE ( DATE(DATE_ADD(cmh.date, INTERVAL i.m MONTH)) = '$SQLDate' )
AND (entityRef = ".$this->entityId.")
GROUP BY i.m, DATE(DATE_ADD(cmh.date, INTERVAL i.m MONTH))

对不起,我没有正确填写我的标题。它应该是“如何获得未来12个日期”。虽然这可以用SQL完成,但我建议它可能属于您的应用程序代码。您可以编辑问题和标题。谢谢。也许是一个间隔为$i MONTH的for循环,其中$i从1到12,您认为这是最有效的方法吗?同意@eggyal。不仅应用程序代码琐碎,从服务器上提取的数据也更少。对不起,我没有正确填写我的标题。它应该是“如何获得未来12个日期”。虽然这可以用SQL完成,但我建议它可能属于您的应用程序代码。您可以编辑问题和标题。谢谢。也许是一个间隔为$i MONTH的for循环,其中$i从1到12,您认为这是最有效的方法吗?同意@eggyal。不仅应用程序代码琐碎,从服务器获取的数据更少。我不能代表任何其他人说话,但我不建议提出任何超过1个问题:简单地说,获得了最后的联系日期,然后在应用程序中突出显示每月的周年纪念日-无需进一步查询。我现在明白你的意思了。到目前为止,这是最好的主意,简单地使用最后联系日期作为参考,并计算未来几个月的日期。我不能代表任何人说话,但我不建议提出任何超过1个问题:简单地说,获得最后联系日期,然后在应用程序中突出显示每月的周年纪念日-无需进一步查询。我现在明白你的意思了。这是迄今为止最好的办法,只需使用最后联系的日期作为参考,并计算未来几个月的日期。