Php mysqli查询日期间隔

Php mysqli查询日期间隔,php,mysqli,dateinterval,Php,Mysqli,Dateinterval,我的mysqli数据库中有一个事件,每年都会重复发生,我设置了一个查询,在当前事件结束后整整一年创建一个新事件 我想知道是否可以将新日期设置为从当前日期算起不超过1年,而是设置为一年后某一天的日期 例如,我的活动日期可能是1月16日星期五,但1年1月6日是星期六 原因是我的活动通常在一年中的第一个星期五举行,因此使用以下查询 $sql3 = mysqli_query($conn,"UPDATE temp_table SET eventDate = DATE_ADD(eventDate , IN

我的mysqli数据库中有一个事件,每年都会重复发生,我设置了一个查询,在当前事件结束后整整一年创建一个新事件

我想知道是否可以将新日期设置为从当前日期算起不超过1年,而是设置为一年后某一天的日期

例如,我的活动日期可能是1月16日星期五,但1年1月6日是星期六

原因是我的活动通常在一年中的第一个星期五举行,因此使用以下查询

$sql3 = 
mysqli_query($conn,"UPDATE temp_table SET
eventDate = DATE_ADD(eventDate , INTERVAL 1 YEAR)") 
or die(mysqli_error($conn,"sql3"));
就像我说的,这将给我一个从eventDate值算起1年后的日期,但它不能保证它是星期五,是否可以修改它以确保它是一年后的星期五

非常感谢 卢克

试试这个:

UPDATE temp_table SET eventDate =  
DATE_ADD(DATE_ADD(eventDate,INTERVAL 1 YEAR),
INTERVAL 5 - (DATE_FORMAT(DATE_ADD(eventDate, INTERVAL 1 YEAR),'%w')) DAY);
日期格式(日期,'%w')返回星期几。0=星期天..6=星期六。星期五

因此,此查询将添加5-“'%w'的下一年日期”天

如果“'%w'的下一年日期”为5,则增加0天;如果为4,则增加1天;如果为6,则增加-1天,以此类推。

尝试以下方法:

UPDATE temp_table SET eventDate =  
DATE_ADD(DATE_ADD(eventDate,INTERVAL 1 YEAR),
INTERVAL 5 - (DATE_FORMAT(DATE_ADD(eventDate, INTERVAL 1 YEAR),'%w')) DAY);
日期格式(日期,'%w')返回星期几。0=星期天..6=星期六。星期五

因此,此查询将添加5-“'%w'的下一年日期”天

如果“下一年日期的“%w”为5,则加0天;如果为4,则加1天;如果为6,则加-1天,以此类推