Mysql
 sql >> Database >  >> RDS >> Mysql

MYSQL:come posso trovare la "data dello scorso lunedì" (problema di prestazioni)

Se non stai usando un vecchio MySQL, puoi racchiuderlo in una funzione memorizzata.

CREATE FUNCTION `LastMonday`() RETURNS DATETIME    
  RETURN DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) ;

e poi chiama

select LastMonday() as LastMonday

Aggiornamento:

Se si verificano problemi di prestazioni, è possibile mantenere il valore in una variabile di sessione. In questo modo puoi essere sicuro che verrà calcolato solo una volta.

set @LastMonday=LastMonday();
select @Lastmonday; 

(in questa semplice query non fa differenza ovviamente...)