Mysql 如何将日期向后移动一定天数v2

Mysql 如何将日期向后移动一定天数v2,mysql,sql,Mysql,Sql,我有以下问题:我有一个表,在第一列中有日期,在第二个信息中有一天是否是工作日(1或0),在第三个信息中,有一个工作日数,第一列中的值应向后移动。有人想过如何得到第四个专栏吗 该表如下所示: 日期 工作日 几天前 10.01.2021 1. 1. 10.01.2021 1. 2. 10.01.2021 1. 3. 10.01.2021 1. 4. 11.01.2021 0 1. 11.01.2021 0 2. 11.01.2021 0 3. 11.01.2021 0 4. 12.01.2021 1

我有以下问题:我有一个表,在第一列中有日期,在第二个信息中有一天是否是工作日(1或0),在第三个信息中,有一个工作日数,第一列中的值应向后移动。有人想过如何得到第四个专栏吗

该表如下所示:

日期 工作日 几天前 10.01.2021 1. 1. 10.01.2021 1. 2. 10.01.2021 1. 3. 10.01.2021 1. 4. 11.01.2021 0 1. 11.01.2021 0 2. 11.01.2021 0 3. 11.01.2021 0 4. 12.01.2021 1. 1. 12.01.2021 1. 2. 12.01.2021 1. 3. 12.01.2021 1. 4.
你要么需要在你的桌子上的每一个工作日,要么你需要一个单独的桌子,上面写着“每天”和“是否是工作日”

我不熟悉mysql,下面是我尝试翻译在MS SQL Server中工作的东西,我希望它能在mysql中工作

下面我假设您唯一的表格名为Table1,它包含每个工作日,并且是您问题中的表格

首先,您需要创建一个函数

CREATE FUNCTION [OffsetDate] 
(
    @StartDate DATE NULL,
    @OffsetDays INT = 0
)
RETURNS DATE
AS
BEGIN
    DECLARE @Result DATE

    SET @Result = @StartDate

    BEGIN
        SELECT @Result = distinctDates.Date
        FROM (SELECT DISTINCT Table1.Date
        FROM Table1
        WHERE Table1.Date <= @StartDate
        AND Table1.WorkDay = 1) AS distinctDates
        ORDER BY distinctDates.Date DESC
        LIMIT 1 OFFSET @OffsetDays
    END

    RETURN @Result
END

这回答了你的问题吗?你已经问了同样的问题,它就关闭了。编辑原始问题或添加更多细节,因为没有更多细节,你几乎没有机会得到答案,因此可以重复
SELECT Table1.Date, Table1.WorkDay, Table1.[Days Back], OffsetDate(Table1.Date, Table1.[Days Back]) AS StartDate
FROM Table1