Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
给定某个日期,如何在mysql中获取上个月的第一天和同一个工作日_Mysql - Fatal编程技术网

给定某个日期,如何在mysql中获取上个月的第一天和同一个工作日

给定某个日期,如何在mysql中获取上个月的第一天和同一个工作日,mysql,Mysql,我是一个使用mysql的noob,在这里和谷歌搜索对我帮助不大 我需要在同一个工作日获得某个日期的上个月的第一天 示例:鉴于日期:2015年5月29日(星期五),我需要4月的第一个星期五(2015年4月3日) (请记住,我需要在更新中使用该值(特别是在where中)) 谢谢你的帮助!祝你度过愉快的一天。这显示了一种到达那里的方法。如果不能使用或不需要中间变量,只需用重复的SQL替换它们即可 SET @startdate= '2015-04-06'; SET @firstdayofprevmon

我是一个使用mysql的noob,在这里和谷歌搜索对我帮助不大

我需要在同一个工作日获得某个日期的上个月的第一天

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

(请记住,我需要在更新中使用该值(特别是在where中))


谢谢你的帮助!祝你度过愉快的一天。

这显示了一种到达那里的方法。如果不能使用或不需要中间变量,只需用重复的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结束

谢谢!!!它实际上起了作用:)