mysql 获取当前日期 所在周的周一和周日

当我们要查自然周的数据时。比如当前日期所在周的 周一到周日数据。可是往往都是周日算一周的第一天很是尴尬。一下两条sql则可解决问题!!!!

select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 0 DAY);  //获取当前周所在的周一

select date_sub('2017-08-28',INTERVAL WEEKDAY('2017-08-28') - 6 DAY); //获取当前周所在的周日


  1. #当年第一天:  
  2. SELECT DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY);  
  3.   
  4. #当年最后一天:  
  5. SELECT concat(YEAR(now()),'-12-31');    
  6.   
  7. #当前week的第一天:    
  8. select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY);  
  9.   
  10. #当前week的最后一天:    
  11. select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 5 DAY);  
  12.   
  13. #前一week的第一天:    
  14. select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 8 DAY);  
  15.   
  16. #前一week的最后一天:    
  17. select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 2 DAY);  
  18.   
  19. #前两week的第一天:    
  20. select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 15 DAY);  
  21.   
  22. #前两week的最后一天:    
  23. select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 9 DAY);  
  24.   
  25. #当前month的第一天:    
  26. SELECT concat(date_format(LAST_DAY(now()),'%Y-%m-'),'01');  
  27.   
  28. #当前month的最后一天:    
  29. SELECT  LAST_DAY(now());  
  30.   
  31. #前一month的第一天:    
  32. SELECT concat(date_format(LAST_DAY(now() - interval 1 month),'%Y-%m-'),'01');  
  33.   
  34. #前一month的最后一天:    
  35. SELECT LAST_DAY(now() - interval 1 month);  
  36.   
  37. #前两month的第一天:    
  38. SELECT concat(date_format(LAST_DAY(now() - interval 2 month),'%Y-%m-'),'01');  
  39.   
  40. #前两month的最后一天:    
  41. SELECT  LAST_DAY(now() - interval 2 month);  
  42.   
  43. #当前quarter的第一天:    
  44. select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM  CURDATE()),1) + interval QUARTER(CURDATE())*3-3 month),'%Y-%m-'),'01');   
  45.   
  46. #当前quarter的最后一天:    
  47. select LAST_DAY(MAKEDATE(EXTRACT(YEAR  FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-1 month);  
  48.   
  49. #前一quarter的第一天:    
  50. select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-6 month),'%Y-%m-'),'01');  
  51.   
  52. #前一quarter的最后一天:    
  53. select  LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-4 month);  
  54.   
  55. #前两quarter的第一天:    
  56. select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-9 month),'%Y-%m-'),'01');  
  57.   
  58. #前两quarter的最后一天:    
  59. select LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-7 month);  



你可能感兴趣的:(mysql)