当前位置: 首页 > 知识库问答 >
问题:

如何在Oracle查询中确定季度的周数

经炜
2023-03-14

我想从Oracle中的sql日期中找到四分之一周。

我尝试在下面的查询中查找年份、季度和周。但week字段给出的是“每月的一周”,而不是“季度的一周”

选择to_char(sysdate,'YYYY')|| '-Q'||to_char(sysdate,'Q') || '-W'||

上述查询返回“2016-Q2-W3”,因为日期位于当月的第三周。

假设sysdate是2016年6月17日,我期待结果

2016-Q2-W12

我的一周范围是(周日-周六)

由于“2016年6月17日”是本季度的第12周,因此应为W12。

提前谢谢。

共有1个答案

庾奇思
2023-03-14

这将得到季度的一周(周日-周六):

SELECT TO_CHAR( SYSDATE, 'YYYY-"Q"Q-"W"' )
     || ( 7 + TRUNC( SYSDATE + 1, 'IW' ) - TRUNC( TRUNC( SYSDATE, 'Q' ) + 1, 'IW' ) ) / 7;
         AS "Current Time"
FROM DUAL

解释:

  • 您可以使用NEXT\u DAY(日期值),“Sunday”)-7(取决于NLS\u TERRITORY设置)或TRUNC(日期值1,“IW”)-1(更短,不取决于任何设置)查找给定日期当天或之前的周日
  • TRUNC(date\u value,'Q')给出包含值的季度第一天的日期(即1月1日、4月1日、7月1日或10月1日)
  • 将二者放在一起,季度第一天或之前的星期日由TRUNC(TRUNC(date\u value,'Q')1,'IW')-1给出
  • 因此,从季度开始之日或之前的星期日到给定日期之日或之前的星期日之间的天数为:(TRUNC(date\u value 1,'IW')-1)-(TRUNC(date\u value,'Q')1,'IW')-1)-可以通过取消术语来简化
  • 周数之差就是该数字除以7(但给出了一个0索引值,您希望季度的周数为1索引;您可以在结果中添加1周,或者在进行除法之前添加7天)
 类似资料:
  • 问题内容: 对我来说,这是一个永无止境的话题,我想知道我是否会忽略某些事情。本质上,我在应用程序中使用两种类型的SQL语句: 具有“后备”限制的常规查询 排序查询和分页查询 现在,我们讨论的是针对具有几百万条记录的表的一些查询,再加上另外五个具有几百万条记录的表的查询。显然,我们几乎不希望全部获取它们,这就是为什么我们有上述两种方法来限制用户查询的原因。 情况1 确实很简单。我们只是添加了一个额外

  • 问题内容: 这是我想阻止在服务器上运行的那种查询的示例: 该查询(或其他类似查询)可能通过Oracle JDBC瘦驱动程序访问了我的Oracle服务器。我愿意阻止该查询在JDBC配置级别,数据库服务器配置级别或通过架构内的用户权限运行。我希望用户能够继续运行正常的选择/插入/更新/删除查询。老实说,如果没有可用的PL / SQL类型命令,而只有标准SQL,我会很高兴。 更新 我还应该提到,我希望用

  • 问题内容: 您能否将我引导到与Oracle中此查询等效的内容: 谢谢 问题答案: 查询从中检索所有行,然后在中检索行数。这样做只是性能优化:它使您不必进行两次查询。 如果性能不是问题,那么Oracle的等效项将是: 如果您可以重写客户端,则可以在一个查询中执行以下两项操作:

  • 我需要通过传递这些参数来获取日期 年份 我在类中查找构造函数,但不包含这些参数。

  • 问题内容: 我正在用查询查询我的elasticsearch索引。查询本身的结构与此类似 我希望能够确定所有这些查询中哪一个是与结果匹配的查询。是否有内置的elasticsearch方法允许这样做,还是我必须手动进行? 问题答案: 您可以使用命名查询,然后在结果中获得匹配的查询的名称。 然后,在结果中,您将获得一个数组,其中包含与文档匹配的查询的名称。

  • 问题内容: 我到处都在寻找解释,以了解选择语句中的子查询如何工作,但由于解释非常模糊,我仍然无法理解该概念。 我想知道您如何在oracle的select语句中使用子查询以及它的确切输出。 例如,如果我有一个查询,希望显示这些表中员工的姓名及其管理的个人资料数量 员工(EmpName,EmpId) Profile(ProfileId,…,EmpId) 如何使用子查询? 我当时想在select语句中需