MYSQL:如何找到'上周一的日期'(表现问题)

lex*_*exu 9 mysql date

有没有比写作更简单的方法:

选择date_sub(curdate(),interval WEEKDAY(curdate())day 作为LastMonday
来自dual

Wou*_*ick 29

如果你没有使用古老的MySQL,你可以将它包装在一个存储的函数中.

CREATE FUNCTION `LastMonday`() RETURNS DATETIME    
  RETURN DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) ;
Run Code Online (Sandbox Code Playgroud)

然后打电话

select LastMonday() as LastMonday
Run Code Online (Sandbox Code Playgroud)

更新:

如果遇到性能问题,可以将值保留在会话变量中.这样你可以确定它只会被计算一次.

set @LastMonday=LastMonday();
select @Lastmonday; 
Run Code Online (Sandbox Code Playgroud)

(在这个简单的查询中,它当然没有区别......)