有一种比写作更简单的方法:
选择 date_sub(curdate(),间隔WEEKDAY(curdate())日)作为LastMonday来自双
答案 0 :(得分:28)
如果您没有使用古老的MySQL,可以将其包装在存储的函数中。
CREATE FUNCTION `LastMonday`() RETURNS DATETIME
RETURN DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) ;
然后致电
select LastMonday() as LastMonday
<强>更新强>
如果遇到性能问题,可以将值保留在会话变量中。这样你可以确定它只会被计算一次。
set @LastMonday=LastMonday();
select @Lastmonday;
(在这个简单的查询中,当然没有区别......)
答案 1 :(得分:0)
SET @dateCurrent = CURDATE();
SET @dateCurrentDayInWeek = DAYOFWEEK(@dateCurrent) - 2;
SET @dateLastMonday = DATE_ADD(@dateCurrent, INTERVAL -@dateCurrentDayInWeek DAY);
SELECT @dateLastMonday;
答案 2 :(得分:-1)
试试这个:
-- Today is 05 April 2013
-- Get Last Monday from MySQL
SELECT DATE_FORMAT(LAST_DAY(NOW()) - ((7 + WEEKDAY(LAST_DAY(NOW())) - 7) % 7), '%Y-%m-%d') last_monday;
-- Output
last_monday
-------------
2013-04-29