Sql 查询获取具有条件的当前日期

Sql 查询获取具有条件的当前日期,sql,date,db2,datediff,Sql,Date,Db2,Datediff,我需要从日期表中获得日期减去3个工作日,以便于具体说明。结构如下: date business day 1/1/13 Y 1/2/13 N 1/3/13 Y 1/4/13 Y 1/5/13 Y 假设今天的日期是1/5/13,那么我需要得到当前的日期-3个工作日,即1/1/13,因为1/2/13是非工作日如果是MSSQL,那么您可以使用

我需要从日期表中获得日期减去3个工作日,以便于具体说明。结构如下:

date business day 1/1/13 Y 1/2/13 N 1/3/13 Y 1/4/13 Y 1/5/13 Y
假设今天的日期是1/5/13,那么我需要得到当前的日期-3个工作日,即1/1/13,因为1/2/13是非工作日

如果是MSSQL,那么您可以使用

GETDATE() - 3
如果是MYSQL,那么您可以在


我相信CURDATE将适用于MYSQL。

我怀疑您是否可以仅使用SQL找到解决此问题的方法。您需要的是一些帮助,以便使用存储过程或类似程序以编程方式解决此问题。

这可以通过所谓的“窗口”函数来完成。但是,由于我不在我的实例中,以下内容应该适用于所有未经测试的DB2最新版本:

SELECT calendar_date
FROM (SELECT calendar_date, ROW_NUMBER() OVER(ORDER BY calendar_date DESC) as rownum
      FROM Calendar
      WHERE calendar_date < CURRENT_DATE
            AND business_day = 'Y') c
WHERE ROW_NUM = 3
这将导致2013-01-01

如果您正在做很多类似的计算,我实际上建议您为这类事情创建存储过程,比如addBusinessDayscalendar\u date,days\u to\u add。虽然您必须访问一个表才能使其工作,但您应该能够将其标记为确定性,假设编译器允许您这样做,并且时间不会突然改变