sql >> Databasteknik >  >> RDS >> Mysql

MYSQL:Hur kan jag hitta "förra måndagens datum" (prestandaproblem)

Om du inte använder en uråldrig MySQL kan du slå in detta i en lagrad funktion.

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

och ring sedan

select LastMonday() as LastMonday

Uppdatering:

Om du har prestandaproblem kan du bevara värdet i en sessionsvariabel. På så sätt kan du vara säker på att det bara kommer att beräknas en gång.

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

(i den här enkla frågan gör det naturligtvis ingen skillnad...)



  1. Oracles behållare för J2EE (OC4J) i R12

  2. 7 sätt att returnera dubbletter av rader som har en primärnyckel i MariaDB

  3. Få maskinskrivna resultat från ActiveRecord rå SQL

  4. Hur man extraherar en delsträng från en sträng i T-SQL