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

Ker*_*nes 6 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
)
Run Code Online (Sandbox Code Playgroud)

有什么更好的方法呢?

Qua*_*noi 10

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

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

SELECT  MAKEDATE(YEAR(CURDATE()), 1) + INTERVAL QUARTER(CURDATE()) QUARTER - INTERVAL 1 DAY
Run Code Online (Sandbox Code Playgroud)

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