其他数据库,可以借助已有的日期函数**计算出指定日期是当年的第几天,除以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