sql >> Database >  >> RDS >> Mysql

MYSQL:Hoe kan ik de 'datum van afgelopen maandag' vinden (prestatieprobleem)

Als je geen oude MySQL gebruikt, kun je dit in een opgeslagen functie stoppen.

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

en bel dan

select LastMonday() as LastMonday

Bijwerken:

Als u prestatieproblemen ondervindt, kunt u de waarde in een sessievariabele behouden. Zo weet je zeker dat het maar één keer berekend wordt.

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

(in deze simpele vraag maakt het natuurlijk niets uit...)



  1. Een tabelwaarde-functie wijzigen in SQL Server

  2. FILEGROUPPROPERTY() gebruiken in SQL Server

  3. Docker-compose :mysqld:kan bestand '/var/lib/mysql/is_writable' niet maken/schrijven naar bestand '/var/lib/mysql/is_writable' (Errcode:13 - Toestemming geweigerd)

  4. alternatief voor listagg in Oracle?