在MySQL找到去年的最后一天

时间:2017-07-26 02:47:14

标签: mysql date

我知道如何在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

感谢您的帮助, 非常感谢。

2 个答案:

答案 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                                                  |
+-------------------------------------------------------------+