zoukankan      html  css  js  c++  java
  • Sql Server 几个时间计算方法

    下面的参数都是传入一个日期,试验时可用GETDATE()

    1、求当月第一天

    select @DATE-DAY(@DATE)+1

    2、求下月第一天

    select DATEADD(MONTH,1,@DATE-DAY(@DATE)+1)

    就是在当月第一天的基础上+1月

    3、求当月最后一天

    select DATEADD(MONTH,1,@DATE-DAY(@DATE)+1)-1

    就是在下月第一天的基础上-1天

    4、求当月的天数

    select DAY(DATEADD(MONTH,1,@DATE-DAY(@DATE)+1)-1)

    就是对当月最后一天进行day运算

    5、求当月的所有日期

    SELECT DATEADD(DAY,NUMBER,@DATE-DAY(@DATE)+1) AS DAT
    FROM MASTER..SPT_VALUES
    WHERE TYPE='P' AND DAY(DATEADD(MONTH,1,@DATE-DAY(@DATE)+1)-1)>NUMBER

    下面还有,省略了。

    6、求当月的第几周

    SELECT DATEPART(WEEK,@DATE)-DATEPART(WEEK,@DATE-DAY(@DATE)+1)+1

    网上找的是一个很复杂的算法,如下:

    SELECT DATEPART(WEEK,DAT)-DATEPART(WEEK,@DATE-DAY(@DATE)+1)+1
    FROM (
    SELECT DATEADD(DAY,NUMBER,@DATE-DAY(@DATE)+1) AS DAT
    FROM MASTER..SPT_VALUES
    WHERE TYPE='P' AND DAY(DATEADD(MONTH,1,@DATE-DAY(@DATE)+1)-1)>NUMBER
    ) T
    WHERE DAT=@DATE

    其实和上面那个是等效的,这太搞笑了吧?算这么久,其实就想给它传个当天的参数?

    好吧,网上找的一个算指定日期在当月是第几周的算法如下:

    CREATE FUNCTION  [dbo].[fn_getWkOfMonth](@DATE_Param DATETIME)
    RETURNS int
    AS
    begin

    DECLARE @DATE DATETIME
    DECLARE @wkOfMonth int
    SET @DATE=@DATE_Param
    set @wkOfMonth=(SELECT DATEPART(WEEK,DAT)-DATEPART(WEEK,@DATE-DAY(@DATE)+1)+1
    FROM (
    SELECT DATEADD(DAY,NUMBER,@DATE-DAY(@DATE)+1) AS DAT
    FROM MASTER..SPT_VALUES
    WHERE TYPE='P' AND DAY(DATEADD(MONTH,1,@DATE-DAY(@DATE)+1)-1)>NUMBER
    ) T
    WHERE DAT=@DATE)
    return @wkOfMonth
    end

    GO

    把它换成下面这个敢不敢?

    CREATE FUNCTION  [dbo].[fn_getWkOfMonth2](@DATE_Param DATETIME)
    RETURNS int
    AS
    begin

    DECLARE @DATE DATETIME
    DECLARE @wkOfMonth int
    SET @DATE=@DATE_Param
    set @wkOfMonth=(DATEPART(WEEK,@DATE)-DATEPART(WEEK,@DATE-DAY(@DATE)+1)+1)
    return @wkOfMonth
    end

    GO




  • 相关阅读:
    高效DevOps的10项实践
    Qlik Sense Desktop
    CQRS架构
    Scala开发环境搭建与资源推荐
    Scala是一门现代的多范式编程语言
    四种优秀架构
    干净的架构The Clean Architecture
    自动更改IP地址反爬虫封锁,支持多线程(转)
    ActiveMQ源码架构解析第一节(转)
    grails的controller和action那点事---远程调试groovy代码
  • 原文地址:https://www.cnblogs.com/thinkCoding/p/2267354.html
Copyright © 2011-2022 走看看