我已经看过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
)
更好的方法是什么?
答案 0 :(得分:10)
通常,MySQL
中的内置函数与磁盘和内存I / O等其他内容相比非常快,因此它们对效率的影响很小。
你可以通过摆脱字符串转换来节省几毫秒:
SELECT MAKEDATE(YEAR(CURDATE()), 1) + INTERVAL QUARTER(CURDATE()) QUARTER - INTERVAL 1 DAY
但是,我甚至不担心这种优化。