Oracle SQL动态开始和结束日期

Oracle SQL动态开始和结束日期,sql,oracle,datetime,dynamic,Sql,Oracle,Datetime,Dynamic,我想要一个动态的Oracle开始和结束日期SQL,它将返回开始日期=2019年11月16日。标准的YYYY部分需要每11月16日增加一年。例如,当Sys_Date大于等于2020年11月16日时,查询将返回开始日期为2020-01-01的记录 此Oracle SQL将在11月16日进行年度更新 “开始日期”=截止日期(“2019-01-01”、“yyyy-mm-dd”) 下面是成功的Alteryx代码,它使用DateTimeNow函数(不是Oracle)来获取/选择/传递所需的日期,但这对Ora

我想要一个动态的Oracle开始和结束日期SQL,它将返回开始日期=2019年11月16日。标准的YYYY部分需要每11月16日增加一年。例如,当Sys_Date大于等于2020年11月16日时,查询将返回开始日期为2020-01-01的记录

此Oracle SQL将在11月16日进行年度更新

“开始日期”=截止日期(“2019-01-01”、“yyyy-mm-dd”)

下面是成功的Alteryx代码,它使用DateTimeNow函数(不是Oracle)来获取/选择/传递所需的日期,但这对Oracle SQL没有帮助

下面是Alteryx应用程序中使用datetimeToday函数查询某些文件日期的代码(不是Oracle)

([FileDt] > Datetimeformat(DatetimeAdd(DateTimeToday(),-1,"year"),'%Y-01-01')) 
AND    // pass [FileDt] > Jan 1 of current year -1 year
ToDate(DateTimeNow())< ToDate(tostring(DateTimeYear(DateTimeNow()))+"-11-15") 
  //pass files when today is < Nov 15 current year
OR
([FileDt] >= ToDate(tostring(DateTimeYear(DateTimeNow()))+"-01-01") 
AND   // pass [FileDt] >= Jan 1 of current year
ToDate(DateTimeNow())>= ToDate(tostring(DateTimeYear(DateTimeNow()))+"-11-15")) 
  // pass files when today is >= Nov 15 Current Year
([FileDt]>Datetimeformat(DatetimeAdd(DateTimeToday(),-1,“年”),“%Y-01-01”))
和//通过[FileDt]>当年1月1日-1年
ToDate(DateTimeNow())=ToDate(tostring(DateTimeYear(DateTimeNow()))+“-01-01”)
且//通过[FileDt]>=当年1月1日
ToDate(DateTimeNow())>=ToDate(tostring(DateTimeYear(DateTimeNow()))+“-11-15”))
//当今天>=当年11月15日时传递文件

可能是这样的。也许这不是100%正确,但你应该了解它是如何工作的

WHERE start_date <= 
   CASE WHEN TO_NUMBER(TO_CHAR(SYSDATE, 'MMDD')) < 1116 THEN 
      ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), 12)-1
   ELSE 
      ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), 24)-1
   END

开始日期可能是这样的。也许这不是100%正确,但你应该了解它是如何工作的

WHERE start_date <= 
   CASE WHEN TO_NUMBER(TO_CHAR(SYSDATE, 'MMDD')) < 1116 THEN 
      ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), 12)-1
   ELSE 
      ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), 24)-1
   END

WHERE start_date感谢您的输入。下面的代码用于创建符合我的要求的StartDate:

CASE
    WHEN SYSDATE BETWEEN 
                 TO_DATE ('1116' || (EXTRACT (YEAR FROM SYSDATE)), 'MM/DD/YYYY')
             AND TO_DATE ('1231' || (EXTRACT (YEAR FROM SYSDATE)), 'MM/DD/YYYY')
    THEN TO_DATE ('1231' || EXTRACT (YEAR FROM SYSDATE), 'MM/DD/YYYY')

    WHEN SYSDATE BETWEEN 
                 TO_DATE ('0101' || (EXTRACT (YEAR FROM SYSDATE)), 'MM/DD/YYYY')
             AND TO_DATE ('1115' || (EXTRACT (YEAR FROM SYSDATE)), 'MM/DD/YYYY')
    THEN TO_DATE ('1231' || EXTRACT (YEAR FROM SYSDATE)-1, 'MM/DD/YYY')

    ELSE NULL
END

谢谢你的意见。下面的代码用于创建符合我的要求的StartDate:

CASE
    WHEN SYSDATE BETWEEN 
                 TO_DATE ('1116' || (EXTRACT (YEAR FROM SYSDATE)), 'MM/DD/YYYY')
             AND TO_DATE ('1231' || (EXTRACT (YEAR FROM SYSDATE)), 'MM/DD/YYYY')
    THEN TO_DATE ('1231' || EXTRACT (YEAR FROM SYSDATE), 'MM/DD/YYYY')

    WHEN SYSDATE BETWEEN 
                 TO_DATE ('0101' || (EXTRACT (YEAR FROM SYSDATE)), 'MM/DD/YYYY')
             AND TO_DATE ('1115' || (EXTRACT (YEAR FROM SYSDATE)), 'MM/DD/YYYY')
    THEN TO_DATE ('1231' || EXTRACT (YEAR FROM SYSDATE)-1, 'MM/DD/YYY')

    ELSE NULL
END