SQL - 月的最后一天

时间:2016-03-22 10:23:05

标签: mysql sql

我有一个看起来像这样的表:

  lastmonth                                    | lastmonth2 
   18-> Corresponding value to Date: 29-02-16  |  15 -> value for 31-01-16

我最近几个月得到了这张桌子。 我现在想要检索行的值,其中包含上个月的最后一天和上个月之前的月份。所以对于今天我想要检索31-1-16和29-2-16的值。

我的结果应如下:

{{1}}

感谢任何帮助。

干杯

3 个答案:

答案 0 :(得分:1)

这是本月最后一天和上个月的逻辑:

<intrin.h>

您可以通过更改&#34; 1&#34;来获取相对于当月的任何月份的最后一天。

并且,我不知道什么日期&#34; 30-2-16&#34;。描述日期时,应使用ISO标准格式。 2016年2月的最后一天是2016-02-29。

答案 1 :(得分:0)

SELECT CASE 
           WHEN  last_day(curdate()) = `DATE` THEN number
       END as number_last_month,
       CASE 
           WHEN last_day(date_sub(curdate(), interval 1 month)) = `DATE` 
                THEN number
       END as number_last_month2
 FROM cc_open_csi_view

我现在无法在sqlfiddle上测试它。

答案 2 :(得分:0)

这是Gordon用于确定正确日期和子查询的代码,用于获取这些行的Number值:

SELECT 
    (SELECT Number FROM cc_open_csi_view
       WHERE last_day(date_sub(curdate(), interval 1 month)) = date(`DATE`)) as lastmonth,
    (SELECT Number FROM cc_open_csi_view
       WHERE last_day(date_sub(curdate(), interval 2 month)) = date(`DATE`)) as lastmonth2
FROM DUAL;

希望这就是你想要的!通过一个简单的例子为我工作。我不知道你是否需要date()部分DATE,但它似乎最安全。