2013-07-19 82 views
-2

我需要從當月如何前一個月的最後一個星期五計算從當月在MySQL

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 6 day 
end as last_friday 

它給我算算前一個月的最後一個星期四當前月的最後一個星期五,但我需要計算上個月的最後一個星期五

+4

那麼,它是星期四還是星期五? –

+1

對不起,你的問題很混亂。在你寫的最上面你需要得到上個星期四。在底部,你想得到上個月的最後一個星期五。請改變你的問題。 –

+0

您正在使用哪個數據庫。 – cjava

回答

1

如果你想獲得最後一個星期四,那麼試試這個。 http://sqlfiddle.com/#!2/d41d8/16634

SELECT case weekday(last_day(curdate()-interval 1 month)) 
when 6 then date_sub(last_day(curdate()-interval 1 month),interval 3 day) 
when 5 then date_sub(last_day(curdate()-interval 1 month),interval 2 day) 
when 4 then date_sub(last_day(curdate()-interval 1 month),interval 1 day) 
when 3 then date_sub(last_day(curdate()-interval 1 month),interval 0 day) 
when 2 then date_sub(last_day(curdate()-interval 1 month),interval 4 day) 
when 1 then date_sub(last_day(curdate()-interval 1 month),interval 5 day) 
when 0 then date_sub(last_day(curdate()-interval 1 month),interval 6 day) end day 
+0

謝謝你,我寄了我答覆,但先生我有一個問題,我有一張桌子,其中包含ID,價格和日期。我需要計算PERUUS MONTH的最後一個星期的價格..如果最後一個星期沒有進入ID那麼那麼它應該讓他找到下一個日期... – suraj

相關問題