如何判断一个日期是否介于上周五和这周四之间?

时间:2021-06-03 14:05:56
请问:
一个日期字段,如何判断一个日期是否介于上周五和这周四之间?
select * from table where getdate()<? and getdate()>?
我想知道?处该怎么写?
谢谢!

13 个解决方案

#1


select * from table where datepart(weekday,getdate())<=5 and datepart(weekday,getdate()>=6

#2


select * from table where datepart(weekday,getdate())<=6 and datepart(weekday,getdate()>=5

#3




select * from [table] where datepart(dw,getdate())>=5 and datepart(dw,getdate())<=6

#4


是介于上周五和这周四之间还是周五和这周四之间??

#5


最起码应该是:
select * from [table] where  datepart(dw,日期字段) >=5 and  datepart(dw,日期字段) <=6

#6


set datefirst 7
go
select select * from table 
where  getdate()
between
       dateadd(day,-(datepart(dw,getdate())-6+7),getdate())
and
       dateadd(day,-(datepart(dw,getdate())-5),getdate())

#7


select * from 表
where 时间字段 between 
dateadd(day,5-datepart(dw,getdate()),getdate())
and
dateadd(day,5-datepart(dw,getdate())-7+1,getdate())

#8


SQL Server日期计算
a. 一个月的第一天
SELECT  DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0)  
b. 本周的星期一
SELECT  DATEADD(wk,  DATEDIFF(wk,0,getdate()),  0) 
c. 一年的第一天
SELECT  DATEADD(yy,  DATEDIFF(yy,0,getdate()),  0)  
d. 季度的第一天
SELECT  DATEADD(qq,  DATEDIFF(qq,0,getdate()),  0)  
e. 上个月的最后一天 
SELECT  dateadd(ms,-3,DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0))  
f. 去年的最后一天
SELECT  dateadd(ms,-3,DATEADD(yy,  DATEDIFF(yy,0,getdate()),  0)) 
g. 本月的最后一天
SELECT  dateadd(ms,-3,DATEADD(mm,  DATEDIFF(m,0,getdate())+1,  0))  
h. 本月的第一个星期一
select  DATEADD(wk,  DATEDIFF(wk,0,                                                          
                               dateadd(dd,6-datepart(day,getdate()),getdate())        
                                                                                                 ),  0)      
i. 本年的最后一天
SELECT  dateadd(ms,-3,DATEADD(yy,  DATEDIFF(yy,0,getdate())+1,  0))。

#9


我感觉,楼主提出的问题是有问题的,因为没有必要进行这样的分析与统计。

还不如直接使用日期来表示。

因为这周会发生变化的! 

#10


declare @a int
首先应该判断今天的日期和今天是星期几
set @newdate=getdate()
set @a=datepart(dw,getdate()) 
如果是星期一,则@a=2
那么这周四就是今天加上3天 即 dateadd(dd,3,getdate())
那么上周五就是今天减去3天 即 dateadd(dd,-3,getdate())

select * from [table] where  日期字段 between dateadd(dd,-3,getdate()) and dateadd(dd,3,getdate()) 

如果是星期二,则@a=3
那么这周四就是今天加上2天 即 dateadd(dd,2,getdate())
那么上周五就是今天减去4天 即 dateadd(dd,-4,getdate())

select * from [table] where  日期字段 between dateadd(dd,-4,getdate()) and dateadd(dd,2,getdate()) 
写个函数,以此类推!!

#11


谢谢各位。这个问题的提出是有理由的,因为我需要判断发货日期是否正常,如果发货日期只要介于上周五和本周四内就算合理的,因为每周发货的船期只有一次。

#12


select * from [table] where  日期字段 between dateadd(dd,-4,getdate()) and dateadd(dd,2,getdate()) 

#13


你这个有什么意义啊!
如果是算 >=5 和 <= 6 的,结果都是对的,假设一个日期@DATE ,如果不在上周五和本周四之间,那它也一定在某一个周五和周四之间,所以永远都对的

declare @date datetime

set @date = '2005-07-07'
select case when datepart(weekday,@date) < 5 Or datepart(weekday,dateadd(day,-6,@date)) > 6 Then 'YES'
            else 'NO'
       end
如果是这样还有点谱

#1


select * from table where datepart(weekday,getdate())<=5 and datepart(weekday,getdate()>=6

#2


select * from table where datepart(weekday,getdate())<=6 and datepart(weekday,getdate()>=5

#3




select * from [table] where datepart(dw,getdate())>=5 and datepart(dw,getdate())<=6

#4


是介于上周五和这周四之间还是周五和这周四之间??

#5


最起码应该是:
select * from [table] where  datepart(dw,日期字段) >=5 and  datepart(dw,日期字段) <=6

#6


set datefirst 7
go
select select * from table 
where  getdate()
between
       dateadd(day,-(datepart(dw,getdate())-6+7),getdate())
and
       dateadd(day,-(datepart(dw,getdate())-5),getdate())

#7


select * from 表
where 时间字段 between 
dateadd(day,5-datepart(dw,getdate()),getdate())
and
dateadd(day,5-datepart(dw,getdate())-7+1,getdate())

#8


SQL Server日期计算
a. 一个月的第一天
SELECT  DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0)  
b. 本周的星期一
SELECT  DATEADD(wk,  DATEDIFF(wk,0,getdate()),  0) 
c. 一年的第一天
SELECT  DATEADD(yy,  DATEDIFF(yy,0,getdate()),  0)  
d. 季度的第一天
SELECT  DATEADD(qq,  DATEDIFF(qq,0,getdate()),  0)  
e. 上个月的最后一天 
SELECT  dateadd(ms,-3,DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0))  
f. 去年的最后一天
SELECT  dateadd(ms,-3,DATEADD(yy,  DATEDIFF(yy,0,getdate()),  0)) 
g. 本月的最后一天
SELECT  dateadd(ms,-3,DATEADD(mm,  DATEDIFF(m,0,getdate())+1,  0))  
h. 本月的第一个星期一
select  DATEADD(wk,  DATEDIFF(wk,0,                                                          
                               dateadd(dd,6-datepart(day,getdate()),getdate())        
                                                                                                 ),  0)      
i. 本年的最后一天
SELECT  dateadd(ms,-3,DATEADD(yy,  DATEDIFF(yy,0,getdate())+1,  0))。

#9


我感觉,楼主提出的问题是有问题的,因为没有必要进行这样的分析与统计。

还不如直接使用日期来表示。

因为这周会发生变化的! 

#10


declare @a int
首先应该判断今天的日期和今天是星期几
set @newdate=getdate()
set @a=datepart(dw,getdate()) 
如果是星期一,则@a=2
那么这周四就是今天加上3天 即 dateadd(dd,3,getdate())
那么上周五就是今天减去3天 即 dateadd(dd,-3,getdate())

select * from [table] where  日期字段 between dateadd(dd,-3,getdate()) and dateadd(dd,3,getdate()) 

如果是星期二,则@a=3
那么这周四就是今天加上2天 即 dateadd(dd,2,getdate())
那么上周五就是今天减去4天 即 dateadd(dd,-4,getdate())

select * from [table] where  日期字段 between dateadd(dd,-4,getdate()) and dateadd(dd,2,getdate()) 
写个函数,以此类推!!

#11


谢谢各位。这个问题的提出是有理由的,因为我需要判断发货日期是否正常,如果发货日期只要介于上周五和本周四内就算合理的,因为每周发货的船期只有一次。

#12


select * from [table] where  日期字段 between dateadd(dd,-4,getdate()) and dateadd(dd,2,getdate()) 

#13


你这个有什么意义啊!
如果是算 >=5 和 <= 6 的,结果都是对的,假设一个日期@DATE ,如果不在上周五和本周四之间,那它也一定在某一个周五和周四之间,所以永远都对的

declare @date datetime

set @date = '2005-07-07'
select case when datepart(weekday,@date) < 5 Or datepart(weekday,dateadd(day,-6,@date)) > 6 Then 'YES'
            else 'NO'
       end
如果是这样还有点谱