SQL语言设置当前年份的一年

时间:2014-08-06 15:47:06

标签: sql date ms-access

我需要语言在SQL查询中设置一年。如果当前日期在10/1到12/31之间,我需要年份值为CurrentYear-5,如果当前日期在1/1和9/30之间,我需要年份值为CurrentYear-6 。这就是我要陈述的方式,但我知道这还不是SQL。 [END]是正在评估的日期字段,它包含完整日期(例如,dd / mm / yyyy)。

WHERE
  if CurrentDay BETWEEN 10/1 AND 12/31
    Year([END]) = CurrentYear-5
  else
    Year([END]) = CurrentYear-6
 endif

3 个答案:

答案 0 :(得分:0)

这可能有效

WHERE
YEAR([END]) =
    CASE WHEN DATEPART(Q,CURRENT_TIMESTAMP) = 4
           THEN YEAR(CURRENT_TIMESTAMP) - 5
           ELSE YEAR(CURRENT_TIMESTAMP) - 6
    END

答案 1 :(得分:0)

SELECT
CASE
    WHEN getdate() < 12/31/year(getdate()) AND getdate() > 10/01/year(getdate())
        THEN year(dateadd(year, -5, getdate()))
    ELSE year(dateadd(year, -6, getdate()))
END
AS whatever

应该这样做。

答案 2 :(得分:0)

您可以使用DATEPART()功能在Access中使用OR而不是CASE语句的两组条件执行此操作:

WHERE (DATEPART("yyyy",[END]) = DATEPART("yyyy",DATE())-5 AND DATEPART("q",DATE()) = 4)
  OR  (DATEPART("yyyy",[END]) = DATEPART("yyyy",DATE())-6 AND DATEPART("q",DATE()) <> 4)

这要求[END]字段是5年前,而目前是第4季度,或者[END]字段是6年前,而不是第4季度。