首页 > 其他分享 >获取中国周的自定义函数 GetChinaWeekNumber

获取中国周的自定义函数 GetChinaWeekNumber

时间:2024-03-28 15:15:36浏览次数:22  
标签:DayOfWeek FirstDayOfYear DATEPART 函数 自定义 INT GetChinaWeekNumber date DECLARE

报表开发,无意发现SQLServer数据库计算周跟 中国周有一点不一样,一般来讲,如果新年的1月1日开始落在的周不满4天,就需要把这几天归集到上一年的周,中国周是从周一~周日,国外的是周日~周六,所以中西方周有点不一样(网上说还有闰年不一样,我没有深入了解,先了解大概,有错误请忽喷,可以用下面的函数计算中国的周仅代表个人使用)

 

 

CREATE FUNCTION GetChinaWeekNumber
(@date DATETIME)
RETURNS INT
AS
BEGIN
    DECLARE @WEEK INT;
    DECLARE @FirstDayOfYear DATETIME;--每年第一天
    DECLARE @DayOfWeek INT;--元旦节是周几
    SET @FirstDayOfYear=CONVERT(DATETIME,CONVERT(VARCHAR,YEAR(@date))+'-01-01');
    SELECT @DayOfWeek=CASE WHEN DATEPART(WEEKDAY, @FirstDayOfYear )-1=0 THEN 7 ELSE  DATEPART(WEEKDAY, @FirstDayOfYear )-1 END;
 
    DECLARE @CURRENTWEEK INT;
    SELECT @CURRENTWEEK=DATEPART(WEEK,CASE WHEN DATEPART(WEEKDAY, @date )-1=0 THEN DATEADD(DAY,-1,@date) ELSE @date END) ;
    
    IF @DayOfWeek>=5  AND @DayOfWeek<7
    BEGIN
        IF @CURRENTWEEK=1
        BEGIN 
            SET @WEEK=DATEPART(WEEK,DATEADD(DAY,-1,@FirstDayOfYear));
        END
        ELSE 
        BEGIN
            SET @WEEK=@CURRENTWEEK-1;
        END
    END
    ELSE 
    BEGIN 
        SET @WEEK=@CURRENTWEEK;
    END
    RETURN @WEEK;
END

 

标签:DayOfWeek,FirstDayOfYear,DATEPART,函数,自定义,INT,GetChinaWeekNumber,date,DECLARE
From: https://www.cnblogs.com/shexunyu/p/18101712

相关文章

  • abs(int)、fabs(double)函数用法
    1.abs函数语法:#include<stdlib.h>intabs(intnum);功能:函数返回参数num.的绝对值。2.fabs函数语法:#include<math.h>doublefabs(doublearg);功能:函数返回参数arg的绝对值。注意两者的头文件的调用不同,abs作用对象为整数,头文件为#include<cstdlib>,fab......
  • oracle逐行处理函数LAG
    在Oracle中,要计算一个列除以上一行的同一列值,可以使用LAG函数来获取上一行的值。以下是一个示例SQL查询,它使用LAG来计算当前行除以上一行的同一列值: SELECTcolumn_value,column_value/LAG(column_value)OVER(ORDERBYsome_order_column)ASdivision_resultFROMyour......
  • oracle中的分割函数(split效果)
     CREATEORREPLACEFUNCTIONfn_split(p_strINVARCHAR2,p_delimiterINVARCHAR2)RETURNty_str_split--分割函数--新建前要先建立ty_str_split执行语句为:CREATEORREPLACETYPEty_str_splitISTABLEOFVARCHAR2(4000);ISjINT:=0;iINT:=1;le......
  • Python 函数
    目录函数自定义函数语法说明匿名函数语法模块标准库和扩展库中对象的导入与使用自定义函数的导入常用内置函数排序sorted()枚举enumerate()映射map()过滤filter()压缩zip()函数函数是可以重复使用的用于实现某种功能的代码块。在Python中,分内置函数......
  • 在Go语言中如何正确使用init函数
    1.概念        init函数是用于初始化应用程序状态的函数。既不接收参数也不返回结果,仅仅是一个func()类型的函数。当初始化包时,将对包中所有的常量和变量声明进行计算。然后执行init函数。下面是初始化main包的例子:packagemainimport"fmt"vara=func()int......
  • 5-3损失函数
    一般来说,监督学习的目标函数由损失函数和正则化项组成。(Objective=Loss+Regularization)Pytorch中的损失函数一般在训练模型时候指定。注意Pytorch中内置的损失函数的参数和tensorflow不同,是y_pred在前,y_true在后,而Tensorflow是y_true在前,y_pred在后。对于回归模型,通常使......
  • 深入理解 Vue 3.0 宏函数:提升组件代码的工程化与可维护性
    Vue3.0宏函数详解:defineProps、defineEmits、defineExpose、defineSlots和defineOptions在Vue3.0中,为了更好地组织和维护组件代码,引入了几个新的宏函数。这些宏函数包括defineProps、defineEmits、defineExpose、defineSlots和defineOptions。本文将详细介绍这五......
  • C++之函数的重载
    指函数名可以相同,提高复用性函数重载满足条件:1.同一个作用域下2.函数名称相同3.函数参数类型不同或者个数不同或者顺序不同注意:函数的返回值不可以作为函数重载的条件//函数重载需要函数都在同一个作用域下voidfunc(){ cout<<"func的调用!"<<endl;}vo......
  • 欧拉函数、快速幂、扩展欧几里得算法、中国剩余定理
     数据结构、算法总述:数据结构/算法C/C++-CSDN博客欧拉函数欧拉函数(Euler'stotientfunction)是一个与正整数n相关的数论函数,通常用φ(n)表示。定义为小于或等于n的正整数中与n互质的数的个数intphi(intx){intres=x;for(inti=2;i<=x/i;i++)......
  • 实例、构造函数、原型、原型对象、prototype、__proto__、原型链……
    学习原型链和原型对象,不需要说太多话,只需要给你看看几张图,你自然就懂了。prototype表示原型对象__proto__表示原型实例、构造函数和原型对象以error举例图中的error表示axios抛出的一个错误对象(实例)。宇宙的尽头是nullObject.prototype.__proto__===null......