因为我正在编写一个存储过程,它将返回一个数字的第一天和最后一天。例如,如果我输入 2,它将返回 1-2-2013 和 28-2-2013,如果我输入 7,那么它将返回 1-7-2013 和 31-7-2013。其中 2013 年是当前年份。我可以这样做吗?
谢谢
因为我正在编写一个存储过程,它将返回一个数字的第一天和最后一天。例如,如果我输入 2,它将返回 1-2-2013 和 28-2-2013,如果我输入 7,那么它将返回 1-7-2013 和 31-7-2013。其中 2013 年是当前年份。我可以这样做吗?
谢谢
要获取当年的月初(示例使用第 2 个月):
SET @theMonth = 2;
SET @beginMonth = STR_TO_DATE(CONCAT('1-', @theMonth, '-', YEAR(CURDATE())), '%d-%m-%Y');
从月初开始计算月末,加一个月,然后减一天:
SET @endMonth = @beginMonth + INTERVAL 1 MONTH - INTERVAL 1 DAY;
由于任何一个月的第一天都是 1,因此您可以通过使用适当命名的LAST_DAY
函数来使用它来获取最后一天:
mysql> SELECT LAST_DAY(STR_TO_DATE(CONCAT(YEAR(CURDATE()),'-','2-1'),GET_FORMAT(DATE,'ISO')));
+---------------------------------------------------------------------------------+
| LAST_DAY(STR_TO_DATE(CONCAT(YEAR(CURDATE()),'-','2-1'),GET_FORMAT(DATE,'ISO'))) |
+---------------------------------------------------------------------------------+
| 2013-02-28 |
+---------------------------------------------------------------------------------+