zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    SVN版本库备份和恢复
    Jira的安装使用
    前端CSS的选择器整理搜集 s
    事务复制在不重新初始化的情况下添加新表
    没有共享存储和仲裁盘的SQL Server 2012HADR故障手动切换TSQL
    SQLSERVER聚集索引的整理(重建)的必要性测试
    sqlserver字符串与表格互相转换的函数和方法
    当一个DBA离职时,如何清除掉数据库里属于他的那些“东西”
    SQLSERVER复制订阅中的数据库版本选择
    1979年12月3日世界协调时间取代格林威治准时间
  • 原文地址:https://www.cnblogs.com/momjs/p/6228471.html
Copyright © 2011-2022 走看看