Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MYSQL:Como posso encontrar 'data da última segunda-feira' (problema de desempenho)


Se você não estiver usando um MySQL antigo, você pode envolvê-lo em uma função armazenada.
CREATE FUNCTION `LastMonday`() RETURNS DATETIME    
  RETURN DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) ;

e depois ligue
select LastMonday() as LastMonday

Atualização:

Se você estiver tendo problemas de desempenho, poderá persistir o valor em uma variável de sessão. Dessa forma, você pode ter certeza de que ele será calculado apenas uma vez.
set @LastMonday=LastMonday();
select @Lastmonday; 

(nesta consulta simples não faz diferença, claro...)