SQL中的周末日期条件

时间:2014-10-20 09:53:06

标签: sql date

最近,我一直在尝试根据日期条件选择几个值(在where子句中)。

示例:

Select A, B, C, D from Table1 
Where D = TO_DATE(TO_CHAR(sysdate-1, 'MM/DD/YYYY'), 'MM/DD/YYYY')

然而,我们的流程在工作日运行存在挑战。因此,当它是星期一时,上面的查询失败,因为它检查sysdate -1(即星期日)而不是星期五。 此外,查询将在假期(例如独立日假期)失败。

如何修改查询以处理这些情况。任何帮助..?

1 个答案:

答案 0 :(得分:0)

dbms可以告诉你工作日,但它不知道你当地的假期。因此,您唯一的选择是拥有一个有效日期的表并使用它(通过选择sysdate之前的最大有效日期)。

编辑:以下是如何处理工作日:

Oracle的TO_CHAR可以为您提供一个天数,但是这是否从星期日或星期一开始计算取决于设置,所以最好不要使用它。但是该函数还可以为您声明的语言提供日期名称,因此您可以使用:

CASE to_char(sysdate, 'DY', 'NLS_DATE_LANGUAGE=AMERICAN')
  WHEN 'MON' THEN trunc(sysdate) - 3
  WHEN 'SUN' THEN trunc(sysdate) - 2
  ELSE            trunc(sysdate) - 1
END as weekday_before