0

因为我正在编写一个存储过程,它将返回一个数字的第一天和最后一天。例如,如果我输入 2,它将返回 1-2-2013 和 28-2-2013,如果我输入 7,那么它将返回 1-7-2013 和 31-7-2013。其中 2013 年是当前年份。我可以这样做吗?

谢谢

4

2 回答 2

0

要获取当年的月初(示例使用第 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;
于 2013-08-08T04:01:43.383 回答
0

由于任何一个月的第一天都是 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                                                                      |
+---------------------------------------------------------------------------------+
于 2013-08-08T04:05:16.147 回答