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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM