zoukankan      html  css  js  c++  java
  • sql 指定时间 所在的周、月、季、年


    DECLARE @TodayDateTime DATETIME
    DECLARE @strToday NVARCHAR(19)

    DECLARE @TodayBeginDateTime DATETIME
    DECLARE @TodayEndDateTime DATETIME

    DECLARE @WeekBeginDateTime DATETIME
    DECLARE @WeekEndDateTime DATETIME

    DECLARE @MonthBeginDateTime DATETIME
    DECLARE @MonthEndDateTime DATETIME

    DECLARE @YearBeginDateTime DATETIME
    DECLARE @YearEndDateTime DATETIME

    DECLARE @QuarterBeginDateTime DATETIME
    DECLARE @QuarterEndDateTime DATETIME

    DECLARE @YesterdayBeginDateTime DATETIME
    DECLARE @YesterdayEndDateTime DATETIME

    DECLARE @Day3BeforeBeginDateTime DATETIME
    DECLARE @Day3BeforeEndDateTime DATETIME

    DECLARE @Day7BeforeBeginDateTime DATETIME
    DECLARE @Day7BeforeEndDateTime DATETIME

    DECLARE @Day14BeforeBeginDateTime DATETIME
    DECLARE @Day14BeforeEndDateTime DATETIME

    DECLARE @Day30BeforeBeginDateTime DATETIME
    DECLARE @Day30BeforeEndDateTime DATETIME

    DECLARE @LastMonthBeginDateTime DATETIME
    DECLARE @LastMonthEndDateTime DATETIME

    DECLARE @LastWeekBeginDateTime DATETIME
    DECLARE @LastWeekEndDateTime DATETIME


    DECLARE @DateID INT


    --指定统计时间
    SET @TodayDateTime=GETDATE()-1 --CAST('2011-03-23 00:00:00' AS DATETIME)
    SET @strToday= CONVERT(NVARCHAR(19),GETDATE(),120)
    --当日
    SET @TodayBeginDateTime=DATEADD(dd, DATEDIFF(dd,0,@TodayDateTime),0)
    SET @TodayEndDateTime=DATEADD(ms, -3, DATEADD(dd, DATEDIFF(dd,0,@TodayDateTime),1))
    --本月的第一天和最后一天
    SET @MonthBeginDateTime=DATEADD(mm, DATEDIFF(mm,0,@TodayDateTime), 0)
    SET @MonthEndDateTime=DATEADD(ms, -3, DATEADD(mm, DATEDIFF(m, 0, @TodayDateTime)+1, 0))
    --本年的第一天和最后一天
    SET @YearBeginDateTime=DATEADD(yy, DATEDIFF(yy,0,@TodayDateTime), 0)
    SET @YearEndDateTime=dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,@TodayDateTime)+1, 0))

    --本周的第一天和最后一天(第一天是星期一 。因为系统默认的星期日是一周的第一天,所以计算时应该在 指定的时间上减一天)
    SET @WeekBeginDateTime = DATEADD(wk, DATEDIFF(wk,0,@TodayDateTime), 0)
    SET @WeekEndDateTime = DATEADD(ms, -3, DATEADD(wk, DATEDIFF(wk,0, @TodayDateTime), 7))



    --本季的度第一天和最后一天
    SET @QuarterBeginDateTime=DATEADD(qq, DATEDIFF(qq, 0, @TodayDateTime), 0)
    SET @QuarterEndDateTime= DATEADD(ms, -3, DATEADD(qq, DATEDIFF(qq, 0, @TodayDateTime)+1, 0))
    --昨天
    SET @YesterdayBeginDateTime=DATEADD(dd, DATEDIFF(dd,0,@TodayDateTime),-1)
    SET @YesterdayEndDateTime=DATEADD(ms, -3, DATEADD(dd, DATEDIFF(dd,0,@TodayDateTime),0))
    --三天前
    SET @Day3BeforeBeginDateTime=DATEADD(dd, DATEDIFF(dd,0,@TodayDateTime),-3)
    SET @Day3BeforeEndDateTime=DATEADD(ms, -3, DATEADD(dd, DATEDIFF(dd,0,@TodayDateTime),-2))
    -- 七天前
    SET @Day7BeforeBeginDateTime=DATEADD(dd, DATEDIFF(dd,0,@TodayDateTime),-7)
    SET @Day7BeforeEndDateTime=DATEADD(ms, -3, DATEADD(dd, DATEDIFF(dd,0,@TodayDateTime),-6))
    -- 14天前
    SET @Day14BeforeBeginDateTime=DATEADD(dd, DATEDIFF(dd,0,@TodayDateTime),-14)
    SET @Day14BeforeEndDateTime=DATEADD(ms, -3, DATEADD(dd, DATEDIFF(dd,0,@TodayDateTime),-13))
    -- 30天前
    SET @Day30BeforeBeginDateTime=DATEADD(dd, DATEDIFF(dd,0,@TodayDateTime),-30)
    SET @Day30BeforeEndDateTime=DATEADD(ms, -3, DATEADD(dd, DATEDIFF(dd,0,@TodayDateTime),-29))

    --上个月的第一天和最后一天
    SET @LastMonthBeginDateTime= DATEADD(mm, DATEDIFF(mm, 0, DATEADD(ms,-3,DATEADD(mm, DATEDIFF(mm,0,@TodayDateTime), 0))), 0)
    SET @LastMonthEndDateTime= DATEADD(ms,-3,DATEADD(mm, DATEDIFF(mm,0,@TodayDateTime), 0))
    --上周第一天和最后一天(第一天是星期一)
    SET @LastWeekBeginDateTime = DATEADD(dd, -1, DATEADD(wk,DATEDIFF(wk, 6, @TodayDateTime), 1))
    SET @LastWeekEndDateTime = DATEADD(ms, -3, DATEADD(dd,0,DATEADD(wk,DATEDIFF(wk,6,@TodayDateTime),7)))

    SET @DateID=CAST(CONVERT(CHAR(10), @TodayDateTime, 112) AS INT)


    /*--核对统计时间 */
    SELECT @TodayDateTime AS TodayDateTime
    , @TodayBeginDateTime AS TodayBeginDateTime, @TodayEndDateTime AS TodayEndDateTime
    , @MonthBeginDateTime AS MonthBeginDateTime, @MonthEndDateTime AS MonthEndDateTime
    , @YearBeginDateTime AS YearBeginDateTime, @YearEndDateTime AS YearEndDateTime
    , @WeekBeginDateTime AS WeekBeginDateTime, @WeekEndDateTime AS WeekEndDateTime
    , @QuarterBeginDateTime AS QuarterBeginDateTime, @QuarterEndDateTime AS QuarterEndDateTime
    , @YesterdayBeginDateTime AS YesterdayBeginDateTime, @YesterdayEndDateTime AS YesterdayEndDateTime
    , @Day3BeforeBeginDateTime AS Day3BeforeBeginDateTime, @Day3BeforeEndDateTime AS Day3BeforeEndDateTime
    , @Day7BeforeBeginDateTime AS Day7BeforeBeginDateTime, @Day7BeforeEndDateTime AS Day7BeforeEndDateTime
    , @Day14BeforeBeginDateTime AS Day14BeforeBeginDateTime, @Day14BeforeEndDateTime AS Day14BeforeEndDateTime
    , @Day30BeforeBeginDateTime AS Day30BeforeBeginDateTime, @Day30BeforeEndDateTime AS Day30BeforeEndDateTime
    , @LastMonthBeginDateTime AS LastMonthBeginDateTime, @LastMonthEndDateTime AS LastMonthEndDateTime
    , @LastWeekBeginDateTime AS LastWeekBeginDateTime, @LastWeekEndDateTime AS LastWeekEndDateTime
    , @DateID AS DateID

  • 相关阅读:
    Pwn-level0
    Pwn-level2
    【php】php从多个数组中取出最大的值
    【算法】php计算数字k在一段数字范围出现的次数
    【算法】php计算出丑数
    【php】php常用函数代码封装(一)数组篇
    【Golang】go语言设计模式
    什么是RPC
    【php】 php获取文件路径中的文件名和文件后缀方法
    【php】php目录路径函数系列
  • 原文地址:https://www.cnblogs.com/xiaonanmu/p/5749246.html
Copyright © 2011-2022 走看看