[数据处理] 根据日期,得到日期是一年的哪一周

yhdata_MS9LvT0s钻石一 显示全部楼层 发表于 2022-1-7 15:02:01 |阅读模式 打印 上一主题 下一主题
根据日期,得到日期是一年的哪一周,获得上一周的周数(年份的第一周是从星期一开始算第一周,比如20220103是星期一,2022年的第一周就从20220103开始)

最佳答案

humming 钻石二 关注Ta

2022-01-07 15:02:02

需要解决两个问题: 问题1:周的启示是周一还是周日, 这个由属性monday.first.day.of.week控制 问题2:1月1号不是周一需要处理。 先通过weekNum拿到周数,如果周数>1, 看是不是要修正。 通过 dateTrunc("year", now())拿到你的日期所在年的一月一号,now()换成你的date参数 然后通过通过weekdayname()判断这个日期是不是“星期一”, 是的话不做修正,否则将周数减1 ...
查看完整内容
回复

使用道具 举报

精彩评论12

humming钻石二 显示全部楼层 发表于 2022-1-7 15:02:02
需要解决两个问题:
问题1:周的启示是周一还是周日, 这个由属性monday.first.day.of.week控制
问题2:1月1号不是周一需要处理。
     先通过weekNum拿到周数,如果周数>1, 看是不是要修正。
     通过 dateTrunc("year", now())拿到你的日期所在年的一月一号,now()换成你的date参数
     然后通过通过weekdayname()判断这个日期是不是“星期一”, 是的话不做修正,否则将周数减1


      
回复

使用道具 举报

_贝贝白银二 显示全部楼层 发表于 2022-1-7 15:18:43
回复

使用道具 举报

yhdata_MS9LvT0s钻石一 显示全部楼层 发表于 2022-1-7 15:44:41
永洪tech-Muse 发表于 2022-1-7 15:18
https://www.yonghongtech.com/help/Z-Suite/9.4/ch/scriptdatefunctions.html?zoom_highlightsub=week

但是需要返回的是日期是今年的第几周,不是返回星期几
回复

使用道具 举报

yhdata_MS9LvT0s钻石一 显示全部楼层 发表于 2022-1-7 16:01:32
永洪tech-Muse 发表于 2022-1-7 15:18
https://www.yonghongtech.com/help/Z-Suite/9.4/ch/scriptdatefunctions.html?zoom_highlightsub=week

比如说现在是2022-01-07,今年的第一周是从星期一开始算,那2022-01-07应该是今年的第一周
回复

使用道具 举报

_贝贝白银二 显示全部楼层 发表于 2022-1-7 16:23:50
本帖最后由 永洪tech-Muse 于 2022-1-7 16:24 编辑

可以配置参数修改,如果配置monday.first.day.of.week=false,则日期组件的周起始日为周日,如果配置为true,则周起始日为周一。默认值是false。
控制周从周一开始还是从周日开始:默认值false从周日开始,true从周一开始;
例如日期表达式:天_周(DayofWeek),周_年(WeekofYear),年周(YearWeek);报表中日期组件等等。
文件系统在安装目录Yonghong/bihome/bi.properities配置文件中修改后重启;
数据库系统在管理系统--数据库空间--下载bi.properties修改后上传(不要改变文件名称还是bi.properties);
https://www.yonghongtech.com/hel ... highlightsub=monday

weekNum就是返回的周数呀
var a =date(2022,1,7);
var b = weekNum(a,2);
debug(weekNum(a))   
并且dayType传数字2代表一个星期的第一天为星期一,不填或其他表示一个星期的第一天为星期天。不能指定某个日期开始算第一周,只能指定从哪天开始算周一
回复

使用道具 举报

yhdata_MS9LvT0s钻石一 显示全部楼层 发表于 2022-1-7 16:30:01
永洪tech-Muse 发表于 2022-1-7 16:23
可以配置参数修改,如果配置monday.first.day.of.week=false,则日期组件的周起始日为周日,如果配置为true ...



修改了配置参数,只是修改了周的起始日期,比如今年的1,2号还是算第一周,能不能做到,20220101、20220102是星期六、星期天,所以算在了2021年的最后一周,20220103是星期一,所以2022年的第一周是从20220103开始,
回复

使用道具 举报

yhdata_KocafXH5青铜三 显示全部楼层 发表于 2022-1-7 16:37:57
使用sql中的函数weekofyear
回复

使用道具 举报

yhdata_MS9LvT0s钻石一 显示全部楼层 发表于 2022-1-7 16:49:52
yhdata_KocafXH5 发表于 2022-1-7 16:37
使用sql中的函数weekofyear

是在数据集里写好吗?
回复

使用道具 举报

humming钻石二 显示全部楼层 发表于 2022-1-8 16:50:52
或者通过另外的脚本实现思路:
var c = new java.util.GregorianCalendar();
c.setFirstDayOfWeek( java.util.Calendar.MONDAY);
c.setMinimalDaysInFirstWeek(7); // 这个是说第一周至少要多少天才算
c.setTime (now()); // 将now()替换成自己的日期参数
debug( c.get( java.util.Calendar.WEEK_OF_YEAR));
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
50W

会员等你来哦

Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |联系社区管理员|《永洪社区协议》
返回顶部