微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

此 SQL 不能跨越“年终”边界

如何解决此 SQL 不能跨越“年终”边界

sql 由 Smarty 文件调用,该文件旨在下载输出的 .xlsx。它适用于除 12 月(年终)报告之外的所有月份。 要做些什么才能让它跨越年终界限,但我不知道是什么。 ?谢谢。

SELECT user_id,cert_name,from_email,created_at,phone as role,delivery,user_street,user_city,user_state,user_zip,user_country_id,standard_fee,expedited_fee 
FROM support_tickets 
WHERE nature = 2 
AND user_id IS NOT NULL 
AND created_at BETWEEN '2012-12-05 04:00:01' and date(concat_ws('-',@year,@month + 1,1)) 
ORDER BY created_at DESC  

解决方法

使用日期算术,而不是字符串连接。

如果您尝试在月份为 12 时添加 @month+1,您将得到第 13 个月,而不是下一年的第 1 个月。当前使用的日历中没有第 13 个月。

对于您的情况,我建议使用 MySQL 内置的 LAST_DAY() 函数。这将返回其参数的当前月份的最后一个日期。

示例:

mysql> SELECT LAST_DAY('2020-12-05') AS last;
+------------+
| last       |
+------------+
| 2020-12-31 |
+------------+

我怀疑你想要同月的最后一天。

如果你真的想要下个月的第一天,使用日期算法:

mysql> SELECT LAST_DAY('2020-12-05') + INTERVAL 1 DAY AS next;
+------------+
| next       |
+------------+
| 2021-01-01 |
+------------+

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?