2011-08-04 16 views
6

He visto algunos otros ejemplos de esto para SQL, pero estoy buscando especialmente para MySQL.MySQL - Último día del trimestre (forma más eficiente)

Este es el código que tengo (que funciona, pero creo que es drásticamente ineficiente). Estoy usando la fecha arbitraria '2011-05-15' que debe devolver y '2011-06-30'.

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

¿Cuál es la mejor manera de hacer esto?

Respuesta

7

En general, las funciones integradas en MySQL son muy rápidas en comparación con otras cosas como las E/S de disco y memoria, por lo que tienen poco impacto en la eficiencia.

Probablemente se podría ahorrar algunos milisegundos mediante la eliminación de la conversión de series:

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

pero, de nuevo, que ni siquiera preocuparse por este tipo de optimizaciones.

+0

Estaba parcialmente intrigado por la cantidad de funciones que requería cuando lo estaba haciendo, y quería omitir las conversiones de cadenas, gracias, esto es perfecto. –

Cuestiones relacionadas