问答 查看内容
返回列表

如何实现按照每年1月1日为当年第一周第一天来计算周数(Oracle标准周)?

260 2
发表于 2024-5-29 19:40:11 | 查看全部 阅读模式
求大神解答

评论2

Guandata_b25a5ebc楼主Lv.1 发表于 2024-5-29 19:41:29 | 查看全部
【解决方案】:除了国际通用的ISO week周数计算方法,Oracle还支持另一种标准周计数方法:每年的01/01为第一周的开始,date+6天为一周的结尾,函数用法为:
to_char(date,'ww')

其他数据库,可以借助已有的日期函数**计算出指定日期是当年的第几天,除以7后向上取整** 即可。获取指定日期在一年中的位置函数一般有以下几个(以下函数Spark都可以使用),不同数据库用法可能会有稍微不同。
dayofyear(date)
date_format(date,'D')
date_part('doy', date)
extract(doy FROM date)
数值计算中向上取整的函数一般有 ceiling/ceil,嵌套使用如下,或者也可以使用余数来判断周数。
方法一:ceil(dayofyear(date)/7)
方法二:
写法1:if(date_format(date,'D')%7=0,cast((date_format(date,'D')/7) as int),cast((date_format(date,'D')/7) as int)+1);
写法2:case when cast(EXTRACT(DOY FROM date) as int)%7 = 0
then cast((cast(EXTRACT(DOY FROM date) as int)/7) as int)
else cast((cast(EXTRACT(DOY FROM date) as int)/7) as int)+1
end
Guandata_b25a5ebc楼主Lv.1 发表于 2024-5-29 19:45:41 | 查看全部
本帖最后由 Guandata_b25a5ebc 于 2024-5-29 19:56 编辑

答:首先,配置主联动控件,选中已拖入表单的单选控件,在右侧「控件属性」-「选项」-「选项来源」选择“来自数据集”,选好下面的「数据集」和「选项字段」;其次,相同的配置被联动控件,在「数据过滤」-「添加过滤条件」。

_场景示例(请点击展开查看)_

以大区-省-城市级联筛选为例。

1)新建单选控件,标题为“大区”,选项字段选择了数据集里的“大区”。注意:选项来源为数据集时,样式仅可选择“下拉框”。


                               
登录/注册后可看大图


2)创建第二个选择控件,根据需要使用单选控件(或者多选)命名为“省份”,「选项来源」选择同一数据集对应字段。然后点击「添加过滤条件」,设置当前字段来源数据集里的“大区”等于来自当前表单的“大区”,点击确定保存。


                               
登录/注册后可看大图


效果展示:大区选择“华东”,省份只能选择“华东”区的省份;选择“浙江”后,城市只能选择浙江省的城市。


                               
登录/注册后可看大图


注意:高级控件里的子表格、矩阵表格、引用填充,都支持添加过滤条件实现级联筛选。但是级联字段只能选择**基础控件** ,不能选择高级控件里的筛选字段。如下图,“城市”的选项可以被上面大区和省份联动,但是“区县”却不能被“城市”联动。  



                               
登录/注册后可看大图

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2024 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去回复 去发帖 返回顶部
快速回复 返回顶部 返回列表