给定特定日期,如何在mysql中使用相同的工作日获取上个月的第一天

时间:2015-05-29 18:11:04

标签: mysql

我是一个使用mysql的菜鸟,在这里和谷歌搜索对我没什么帮助。

我需要获取同一工作日某个日期的前一个月的第一天

示例:鉴于此日期:2015年5月29日(星期五),我需要4月的第一个星期五(2015年4月3日)。

(请记住,我需要更新内的值(特别是在里面))

感谢您的帮助!祝你有愉快的一天。

1 个答案:

答案 0 :(得分:0)

这显示了实现目标的一种方法。如果您不能使用或不想要中间变量,只需将它们替换为重复的SQL即可。

SET @startdate= '2015-04-06';
SET @firstdayofprevmon =
 CONCAT(YEAR(DATE_ADD(@startdate, INTERVAL -1 MONTH)),'-',LPAD(MONTH(DATE_ADD(@startdate, INTERVAL -1 MONTH)),2,'0'),'-01' ) ;
 SELECT
CASE
 WHEN DAYOFWEEK(@firstdayofprevmon) <  DAYOFWEEK(@startdate) THEN
 /* If the day of week for first day of previous month is less than target day of week,simply increment the difference */
 DATE_ADD(@firstdayofprevmon, INTERVAL (DAYOFWEEK(@startdate)-DAYOFWEEK(@firstdayofprevmon)) DAY) 

 WHEN DAYOFWEEK(@firstdayofprevmon) >  DAYOFWEEK(@startdate) THEN
  /* If greater, add a week to the difference */
 DATE_ADD(@firstdayofprevmon, INTERVAL (DAYOFWEEK(@startdate)-DAYOFWEEK(@firstdayofprevmon) +7)  DAY) 
 ELSE
 /* Otherwise, the first day of the month is the answer */
 @firstdayofprevmon
 END AS TargetDate