我已经看到了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)
但是,我甚至不担心这种优化.