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

本月的第几周。一周应从周一开始,周日结束

聂季同
2023-03-14

我需要在我的dim_date中添加新的业务wee,实际上我有一个月中的星期,如下表所示,每7天计算一次。

但是对于这个商业周专栏,一周应该从星期一开始,到星期日结束,即使第一周只有一天(当一个月从星期日开始时),但如果月份从星期五开始,我应该将其视为该月的第一周。

你有什么建议来计算这个吗?谢谢

共有2个答案

呼延沈义
2023-03-14

我希望我想出的这个解决方案可以在未来帮助你,或者我们可以讨论并改进这个解决方案:

WITH sample_data AS (SELECT
                     date,
                     EXTRACT(WEEK FROM date) AS week_of_year,
                     DATE_TRUNC(date, MONTH) AS FIRST_DAY_OF_MONTH
                 FROM (SELECT date
                       FROM UNNEST(GENERATE_TIMESTAMP_ARRAY('2022-04-01', '2022-04-19', INTERVAL 1 DAY)) AS date))
SELECT
date,
FORMAT_DATE('%A', date) as day_name,
CASE
    WHEN CAST(EXTRACT(WEEK(MONDAY) FROM d.date) AS INT) = 0 AND d.WEEK_OF_YEAR IN (52, 53) THEN 1
    WHEN CAST(EXTRACT(WEEK(MONDAY) FROM d.FIRST_DAY_OF_MONTH) AS INT) = 0 THEN EXTRACT(WEEK(MONDAY) FROM d.date) + 1
    ELSE (d.WEEK_OF_YEAR - CAST(EXTRACT(WEEK(MONDAY) FROM d.FIRST_DAY_OF_MONTH) AS INT)) + 1
END AS BUSINESS_WEEK_OF_MONTH
FROM sample_data d;
郭远
2023-03-14

此查询获取从2002-04-012002-04-19的周数。本周从周一开始,周日结束。您可以看到以下示例:

with sample_data as (
    SELECT date FROM UNNEST(generate_timestamp_array('2022-04-01', '2022-04-19', INTERVAL 1 DAY)) as date
)

select
    date 
    , extract(week(MONDAY) from  date)-(extract(MONTh from  date)-1)*4 AS days_diff
    ,  FORMAT_DATE('%A', date)
from sample_data

你可以看到结果。

您需要使用EXTRACT函数。

 类似资料:
  • 问题内容: 我在我的应用程序中使用了自定义日历。我已为用户提供了选择一周中第一天的选项,可能是: 我想获取一个月中的星期数-取决于星期几的开始时间,而不是星期几的默认值- 。 码: 问题答案: 尝试 在您的情况下,您可能需要执行以下操作: 并用诸如

  • 我在本教程的帮助下制作了日历:http://droidwalk.blogspot.it/2012/11/android-calendar-sample.html ..但是这个日历从星期天开始,我想从星期一开始。。我试图改变价值观​​在函数中设置对象GregorianCalendar,但它不会给出所需的结果。本周从周一开始,但在某些月份,我们失去了第一周。我发现了一个类似的问题:从周一开始制作日历,

  • 问题内容: 我目前正在使用vbscript函数以2/12/2009格式获取本周和上周的第一天值。我想知道是否可以使用SQL查询。 问题答案: 这些语句应该在TSQL中完成您想要的操作。请注意,这些报表基于当前日期。您可以将getdate()替换为所需的任何日期:

  • 问题内容: 我在这个问题上看到了一些变体,但我相信这个问题尚未得到解答。 我需要获取一周的开始日期和结束日期,并由年份和星期数选择(而不是日期) 例: 输入: 输出: 返回值将类似于一个数组,其中第一个条目是星期开始日期,第二个条目是结束日期。 可选:当我们需要时,日期格式必须为(正常日期格式,无前导零。 我尝试编辑几乎可以完成我想要的功能,但是到目前为止我还没有运气。 请帮帮我,谢谢。 问题答案

  • 也许我想多了。我想每周一上午9点发送本地通知,直到满足某些条件。我知道这可以通过设置的和组件来完成。我遇到的问题是我将传递给的值取决于正在使用的。如果我理解正确,则取决于用户的设置。例如,如果用户的日历周从周日开始,我会传递1到,但如果一周从周六开始,我会传递2。 我的问题是,我该如何解释时区、夏令时和周开始日之类的事情?

  • 我正在尝试为我们的财务部门生成一些代码,他们需要一个字段,该字段将为他们提供一年中的当前一周,但以星期天为基础,这是一周的第一天。例如01-25-16(MM dd yyyy)将是第4周。然而,当我尝试使用和