给定某个日期,如何在mysql中获取上个月的第一天和同一个工作日
我是一个使用mysql的noob,在这里和谷歌搜索对我帮助不大 我需要在同一个工作日获得某个日期的上个月的第一天 示例:鉴于日期:2015年5月29日(星期五),我需要4月的第一个星期五(2015年4月3日) (请记住,我需要在更新中使用该值(特别是在where中))给定某个日期,如何在mysql中获取上个月的第一天和同一个工作日,mysql,Mysql,我是一个使用mysql的noob,在这里和谷歌搜索对我帮助不大 我需要在同一个工作日获得某个日期的上个月的第一天 示例:鉴于日期:2015年5月29日(星期五),我需要4月的第一个星期五(2015年4月3日) (请记住,我需要在更新中使用该值(特别是在where中)) 谢谢你的帮助!祝你度过愉快的一天。这显示了一种到达那里的方法。如果不能使用或不需要中间变量,只需用重复的SQL替换它们即可 SET @startdate= '2015-04-06'; SET @firstdayofprevmon
谢谢你的帮助!祝你度过愉快的一天。这显示了一种到达那里的方法。如果不能使用或不需要中间变量,只需用重复的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
SET@startdate='2015-04-06';
设置@firstdayofprevmon=
CONCAT(年份(日期添加(@startdate,间隔-1个月)),“-”,LPAD(月份(日期添加(@startdate,间隔-1个月)),2,'0'),“-01”);
选择
案例
当星期一(@firstdayofpremon)DAYOFWEEK(@startdate)时,则
/*如果更大,则在差额上增加一周*/
日期加上(@firstdayofpremon,间隔(DAYOFWEEK(@startdate)-DAYOFWEEK(@firstdayofpremon)+7)天)
其他的
/*否则,每月的第一天就是答案*/
@一月一日
以TargetDate结束
谢谢!!!它实际上起了作用:)