gpt4 book ai didi

MySQL 年间隔,包括上一年的整个月份

转载 作者:行者123 更新时间:2023-11-29 11:45:16 25 4
gpt4 key购买 nike

我有一个 MySQL 条件,它获取从现在起 x 个月的时间间隔。通常,这将设置为 13 个月,以便您可以将当前月份与去年进行比较。

'created > DATE_SUB(now(), INTERVAL ' . $timeInterval . ' MONTH)'

例如,去年一月与今年一月的比较,但我想包括前几年的所有月份。因此,我不会将 2015 年 1 月 20 日到 2016 年 1 月 20 日改为从 2015 年 1 月 1 日到今年 1 月的当前日期,直到 2 月 1 日。

最佳答案

我会使用DATE_FORMAT来使其快速简单,用常量替换日期的“日”部分。然后减去你的月数...

... t.created > DATE_FORMAT(NOW(),'%Y-%m-01') - INTERVAL ? MONTH
<小时/>

作为该表达式返回内容的演示,我们可以使用简单的 SELECT 语句对其进行测试:

SELECT NOW(), DATE_FORMAT(NOW(),'%Y-%m-01') - INTERVAL 12 MONTH

NOW() DATE_FORMAT(NOW(),'%Y-%m-01') - INTERVAL 12 MONTH
------------------- -------------------------------------------------
2016-01-27 21:01:02 2015-01-01
<小时/>

跟进

您确定要进行“大于”比较,而不是“大于或等于”比较>=吗?

还有其他方法可以生成要进行比较的日期值。您可以使用 DATE(NOW())CURDATE() 返回不带时间部分的当前日期。

并使用DAY()函数获取当前日期的数值,然后减去该值(减1)作为天数。例如,像这样:

 >= DATE(NOW()) - INTERVAL DAY(NOW())-1 DAY - INTERVAL 12 MONTH

这看起来更困惑、更复杂。我认为将 '-01' 中的填充作为日期部分更容易理解。

关于MySQL 年间隔,包括上一年的整个月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35047761/

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