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

时间:2009-08-13 08:51:11

标签: mysql date

有一种比写作更简单的方法:

选择 date_sub(curdate(),间隔WEEKDAY(curdate())日)作为LastMonday来自双

3 个答案:

答案 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