MySQL - 季度的最后一天(最有效的方式)

时间:2011-08-04 22:11:21

标签: mysql

我已经看过SQL的其他几个例子,但我特别关注MySQL。

这是我的代码(有效,但我认为这是非常低效的)。我正在使用任意日期'2011-05-15',它应该并且确实返回'2011-06-30'。

DATE_SUB( 
    DATE_ADD( 
        CONCAT( 
            YEAR( CURDATE() ), 
            '-01-01' 
        ), 
        INTERVAL QUARTER('2011-05-15') QUARTER 
    ), 
    INTERVAL 1 DAY
)

更好的方法是什么?

1 个答案:

答案 0 :(得分:10)

通常,MySQL中的内置函数与磁盘和内存I / O等其他内容相比非常快,因此它们对效率的影响很小。

你可以通过摆脱字符串转换来节省几毫秒:

SELECT  MAKEDATE(YEAR(CURDATE()), 1) + INTERVAL QUARTER(CURDATE()) QUARTER - INTERVAL 1 DAY

但是,我甚至不担心这种优化。