一个日期字段,如何判断一个日期是否介于上周五和这周四之间?
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
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())
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())
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))。
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())
写个函数,以此类推!!
首先应该判断今天的日期和今天是星期几
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
如果是这样还有点谱
如果是算 >=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
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())
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())
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))。
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())
写个函数,以此类推!!
首先应该判断今天的日期和今天是星期几
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
如果是这样还有点谱
如果是算 >=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
如果是这样还有点谱