• Sql Server中查询今天、昨天、本周、上周、本月、上月数据


    Sql Server中查询今天、昨天、本周、上周、本月、上月数据

    在做Sql Server开发的时候有时需要获取表中今天、昨天、本周、上周、本月、上月等数据,这时候就需要使用DATEDIFF()函数及GetDate()函数了。
    DATEDIFF ( datepart , startdate , enddate )
    释义:计算时间差
    datepare值:year | quarter | month | week | day | hour | minute | second | millisecond
    startdate:开始日期
    enddate :结束日期
    GetDate()
    释义:获取当前的系统日期

    下面例子中表名为tablename,条件字段名为inputdate

    查询今天

    SELECT * FROM tablename where DATEDIFF(day,inputdate,GETDATE())=0

    查询昨天

    SELECT * FROM tablename where DATEDIFF(day,inputdate,GETDATE())=1

    查询本周

    SELECT * FROM tablename where datediff(week,inputdate,getdate())=0

    查询上周

    SELECT * FROM tablename where datediff(week,inputdate,getdate())=1

    查询本月

    SELECT * FROM tablename where DATEDIFF(month,inputdate,GETDATE())=0

    查询上月

    SELECT * FROM tablename where DATEDIFF(month,inputdate,GETDATE())=1

    查询本季度的

    select * from T_InterViewInfo where datediff(QQ,inputdate,getdate())=0

    ----------------------------------------------

    sqlserver日期推算(年,季度,月,星期推算)

     

    DECLARE @dt datetime
    SET @dt=GETDATE()

    DECLARE @number int
    SET @number=3


    --1.指定日期该年的第一天或最后一天
    --第一天为1月1日、最后一天为12月31日都是固定的

    --A. 年的第一天
    SELECT CONVERT(char(5),@dt,120)+'1-1'

    --B. 年的最后一天
    SELECT CONVERT(char(5),@dt,120)+'12-31'


    --2.指定日期所在季度的第一天或最后一天
    --A. 季度的第一天
    SELECT CONVERT(datetime,
     CONVERT(char(8),
      DATEADD(Month,
       DATEPART(Quarter,@dt)*3-Month(@dt)-2,
       @dt),
      120)+'1')

    --B. 季度的最后一天(CASE判断法)
    SELECT CONVERT(datetime,
     CONVERT(char(8),
      DATEADD(Month,
       DATEPART(Quarter,@dt)*3-Month(@dt),
       @dt),
      120)
     +CASE WHEN DATEPART(Quarter,@dt) in(1,4)
      THEN '31'ELSE '30' END)

    --C. 季度的最后一天(直接推算法)
    SELECT DATEADD(Day,-1,
     CONVERT(char(8),
      DATEADD(Month,
       1+DATEPART(Quarter,@dt)*3-Month(@dt),
       @dt),
      120)+'1')


    --3.指定日期所在月份的第一天或最后一天
    --A. 月的第一天
    SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')

    --B. 月的最后一天
    SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1')


    --4.指定日期所在周的任意一天
    SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)


    --5.指定日期所在周的任意星期几
    --A.  星期天做为一周的第1天
    SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)

    --B.  星期一做为一周的第1天
    SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)

  • 相关阅读:
    在游戏中充分利用可编程的GPU
    坐标变换
    深入理解GPU Architecture(上)
    RV870和GT300的一些猜测
    深入理解Intel Core Microarchitecture
    CGDC见闻
    hdu 1517 K(2~9)倍博弈
    hdu 2177 威佐夫博弈+输出使你胜的你第1次取石子后剩下的两堆石子的数量
    坚持住
    真正体会到一个ac的快感
  • 原文地址:https://www.cnblogs.com/momjs/p/6228471.html
Copyright © 2020-2023  润新知