create proc p_wsp
as
declare @star datetime
set datefirst 1
set @star=convert(varchar(7),getdate(),120)+'-01'
if(datepart(dw,@star)=7)
set @star=dateadd(dd,1,@star)
--得到这个月第一个星期六
set @star=dateadd(dd,6-datepart(dw,@star),@star)
--得到本月第四个星期六
set @star=dateadd(dd,21,@star)
if(datediff(dd,@star,getdate())=0) --如果今天是本月第四个星期六,则执行删除操作
begin
---删除
print 'DELETE'
end
else
begin
--不做任何操作
print 'NO'
end
go上面实现的效果是每个月的第四个周六执行,现在我要实现的效果是
每月的第四个周六的20:00 执行请问怎么修改哦。谢谢了 主要是时间上的限制怎么限制一下。
as
declare @star datetime
set datefirst 1
set @star=convert(varchar(7),getdate(),120)+'-01'
if(datepart(dw,@star)=7)
set @star=dateadd(dd,1,@star)
--得到这个月第一个星期六
set @star=dateadd(dd,6-datepart(dw,@star),@star)
--得到本月第四个星期六
set @star=dateadd(dd,21,@star)
if(datediff(dd,@star,getdate())=0) --如果今天是本月第四个星期六,则执行删除操作
begin
---删除
print 'DELETE'
end
else
begin
--不做任何操作
print 'NO'
end
go上面实现的效果是每个月的第四个周六执行,现在我要实现的效果是
每月的第四个周六的20:00 执行请问怎么修改哦。谢谢了 主要是时间上的限制怎么限制一下。
as
declare @star datetime
set datefirst 1
set @star=convert(varchar(7),getdate(),120)+'-01'
if(datepart(dw,@star)=7)
set @star=dateadd(dd,1,@star)
--得到这个月第一个星期六
set @star=dateadd(dd,6-datepart(dw,@star),@star)
--得到本月第四个星期六
set @star=cast(convert(varchar(10),dateadd(dd,21,@star),120)+' 20:00:00' as datetime) ---修改这边
if(datediff(dd,@star,getdate())=0) --如果今天是本月第四个星期六,则执行删除操作
begin
---删除
print 'DELETE'
end
else
begin
--不做任何操作
print 'NO'
end
go
as
declare @star datetime
set datefirst 1
set @star=convert(varchar(7),getdate(),120)+'-01'
if(datepart(dw,@star)=7)
set @star=dateadd(dd,1,@star)
--得到这个月第一个星期六
set @star=dateadd(dd,6-datepart(dw,@star),@star)
--得到本月第四个星期六
set @star=dateadd(dd,21,@star)
if(datediff(dd,@star,getdate())=0) and datepart(hh,@star)=20 --如果今天是本月第四个星期六,则执行删除操作
begin
---删除
print 'DELETE'
end
else
begin
--不做任何操作
print 'NO'
end
go
create proc p_wsp
as
declare @star datetime
set datefirst 1
set @star=convert(varchar(7),getdate(),120)+'-01'
if(datepart(dw,@star)=7)
set @star=dateadd(dd,1,@star)
--得到这个月第一个星期六
set @star=dateadd(dd,6-datepart(dw,@star),@star)
--得到本月第四个星期六
set @star=dateadd(dd,21,@star)
if(datediff(ss,@star,getdate())=72000) --如果今天是本月第四个星期六,则执行删除操作
begin
---删除
print 'DELETE'
end
else
begin
--不做任何操作
print 'NO'
end
go
精确到秒了,就是getdate()取得的时间比第四个周六00:00:00晚72000秒(20小时)
create proc p_wsp
as
declare @star datetime
set datefirst 1
set @star=convert(varchar(7),getdate(),120)+'-01'
if(datepart(dw,@star)=7)
set @star=dateadd(dd,1,@star)
--得到这个月第一个星期六
set @star=dateadd(dd,6-datepart(dw,@star),@star)
--得到本月第四个星期六
set @star=dateadd(dd,21,@star)
if(datediff(dd,@star,getdate())=0) and datepart(hh,getdate())=20 --如果今天是本月第四个星期六,则执行删除操作
begin
---删除
print 'DELETE'
end
else
begin
--不做任何操作
print 'NO'
end
go
set @star=cast(convert(varchar(10),dateadd(dd,21,@star),120)+' 20:00:00' as datetime) 能否详解一下这是什么意思呢
dateadd(dd,21,@star) 取本周第四个周六
convert(varchar(10),dateadd(dd,21,@star),120) 指定形式取出第四个周六的年月日
convert(varchar(10),dateadd(dd,21,@star),120)+' 20:00:00' 加上晚上8点构成第四个周六20点的字符串
cast(convert(varchar(10),dateadd(dd,21,@star),120)+' 20:00:00' as datetime) 把上面的字符串转换成datetime类型
as
declare @star datetime
set datefirst 1
set @star=convert(varchar(7),getdate(),120)+'-01'
if(datepart(dw,@star)=7)
set @star=dateadd(dd,1,@star)
--得到这个月第一个星期六
set @star=dateadd(dd,6-datepart(dw,@star),@star)
--得到本月第四个星期六
set @star=dateadd(dd,21,@star)
if(datediff(dd,@star,getdate())=0) and datepart(hh,@star)=20 and datepart(mi,@star)=0 and datepart(ss,@star)=0 and datepart(ms,@star)=0 --如果今天是本月第四个星期六,则执行删除操作
begin
---删除
print 'DELETE'
end
else
begin
--不做任何操作
print 'NO'
end
go
那个是精确到秒的,如果你的这个判断逻辑做不到1秒判断一次的话用分钟判断吧把if(datediff(ss,@star,getdate())=72000) 这句
改成if(datediff(MI,@star,getdate())=1200)