帅帅男孩 发表于 2017-7-13 23:38:02

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 wheredatediff(week,inputdate,getdate())=0
  查询上周
  SELECT * FROM tablename wheredatediff(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)
页: [1]
查看完整版本: Sql Server中查询今天、昨天、本周、上周、本月、上月数据