我知道如何在MySQL中找到这个(当前)年份的最后一天。
SELECT LAST_DAY(DATE_ADD(NOW(), INTERVAL 12-MONTH(NOW()) MONTH)); //It shows this year (2017)'s last day. ==> 2017-12-31
但我不知道如何找到最后一天的最后一天。
我应该输入哪些查询来确定去年的最后一天?
例如:
++++This Year++++ | ++++Last Year's Last Day++++
2017 | 2016-12-31
2018 | 2017-12-31
2019 | 2018-12-31
2020 | 2019-12-31
感谢您的帮助, 非常感谢。
答案 0 :(得分:1)
只需减去一年:
SELECT DATE_SUB(LAST_DAY(DATE_ADD(NOW(), INTERVAL 12-MONTH(NOW()) MONTH)), INTERVAL 1 YEAR)
答案 1 :(得分:1)
正如我所提到的,在这种特殊情况下,一年中的最后一天(或第一天)永远不会改变,你可以采用更简单的解决方案。
实际上有很多方法可以做到这一点,在这种情况下,没有像Gordon那样进入日期时间,而是使用负间隔的DATE_ADD。
SELECT CONCAT(YEAR(CURDATE())-1,'-12-31');
+------------------------------------+
| CONCAT(YEAR(CURDATE())-1,'-12-31') |
+------------------------------------+
| 2016-12-31 |
+------------------------------------+
可能在大多数情况下,只需将其作为标准MySQL日期格式的字符串即可,但如果您确实需要将其作为mysql日期进行比较,或者因为mysql客户端正在读取mysql数据类型并执行一些特殊操作在您的服务器端语言中,您可以使用STR_TO_DATE转换它。
SELECT STR_TO_DATE(CONCAT(YEAR(CURDATE())-1,'-12-31'), '%Y-%m-%d');
+-------------------------------------------------------------+
| STR_TO_DATE(CONCAT(YEAR(CURDATE())-1,'-12-31'), '%Y-%m-%d') |
+-------------------------------------------------------------+
| 2016-12-31 |
+-------------------------------------------------------------+