Hallo。我怎樣才能得到mysql當前月份的最後一個星期五的日期?MySQL的月份的最後一個星期五
在此先感謝。
編輯。嗨Stefan。這是我所做的
set @ldom = dayofweek(last_day(curdate()));
select
case
when @ldom = 7 then last_day(curdate()) - interval 1 day
when @ldom = 6 then last_day(curdate())
when @ldom = 5 then last_day(curdate()) - interval 6 day
when @ldom = 4 then last_day(curdate()) - interval 5 day
when @ldom = 3 then last_day(curdate()) - interval 4 day
when @ldom = 2 then last_day(curdate()) - interval 3 day
else last_day(curdate()) - interval 2 day
end as last_friday
但我想知道是否有更聰明的方法。
編輯。我在samplebias上做了一些測試,以找到特定月份的最後一個星期一,星期二等。
這些是正確的查詢。
-- last sunday of month
set @data = '2011-04-01';
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data)) - 6) % 7),"%Y%m%d") -- 2011-04-24
-- last saturday
set @data = '2011-04-01';
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data)) - 5) % 7),"%Y%m%d") -- 2011-04-30
-- last friday
set @data = '2011-04-01';
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data)) - 4) % 7),"%Y%m%d") -- 2011-04-29
-- last thursday
set @data = '2011-04-01';
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data)) - 3) % 7),"%Y%m%d") -- 2011-04-28
-- last wednesday
set @data = '2011-04-01';
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data)) - 2) % 7),"%Y%m%d") -- 2011-04-27
-- last tuesday
set @data = '2011-04-01';
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data)) - 1) % 7),"%Y%m%d") -- 2011-04-26
-- last monday
set @data = '2011-04-01';
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data))) % 7),"%Y%m%d") -- 2011-04-25
希望它可以幫助別人。 再次感謝samplebias。 ;)
好吧,我不會爲你完全解決它,但提示:選擇月份的地區,按日期降序排序,在工作日使用where datepart並檢查星期五。然後將其限制爲1. – stefan 2011-03-11 01:33:47