在SQL数据库中怎么在系统时间超过指定时间的时候自动更新一条记录
在SQL数据库中如何在系统时间超过指定时间的时候自动更新一条记录
比如设置一个记录的时间是6小时
id name type startime endtime
1 张三 1 10:00 06:00
有什么方法写 倒计时6小时后 跟系统时间比(也就是系统时间16点的时候) type改成0
不知道我有没表述清楚 求教 asp。net mssql
------解决方案--------------------
在SQL Server 的作业中创建一个作业,每小时运行一次,里面的脚本逻辑大概是判断当前时间和startime+endtime是否等于getdate()的值。如果等于则update,否则不做任何操作,说白了就是:
update tb
set type=0
where startime+endtime=getdate() 这里startime+endtime要做处理,因为只有时分,没有年月日和秒
------解决方案--------------------
纯SQL Server做不到,它毕竟主要拿来“存取”数据,不是用来做这些定时的,定时功能一般要用SQL Agent。
------解决方案--------------------
数据库设计不合理,应该是
也不用开定时任务了,把 type 做成计算字段:
starttime < 当前时间 : -1 任务没启动,有这种可能吧
endtime < 当前时间 : 1
否则 : 0
------解决方案--------------------
比如设置一个记录的时间是6小时
id name type startime endtime
1 张三 1 10:00 06:00
有什么方法写 倒计时6小时后 跟系统时间比(也就是系统时间16点的时候) type改成0
不知道我有没表述清楚 求教 asp。net mssql
------解决方案--------------------
在SQL Server 的作业中创建一个作业,每小时运行一次,里面的脚本逻辑大概是判断当前时间和startime+endtime是否等于getdate()的值。如果等于则update,否则不做任何操作,说白了就是:
update tb
set type=0
where startime+endtime=getdate() 这里startime+endtime要做处理,因为只有时分,没有年月日和秒
------解决方案--------------------
纯SQL Server做不到,它毕竟主要拿来“存取”数据,不是用来做这些定时的,定时功能一般要用SQL Agent。
------解决方案--------------------
数据库设计不合理,应该是
id name type startime endtime durationtime
1 张三 ? 2014-07-04 10:00:00 2014-07-04 16:00:00 06:00
也不用开定时任务了,把 type 做成计算字段:
starttime < 当前时间 : -1 任务没启动,有这种可能吧
endtime < 当前时间 : 1
否则 : 0
------解决方案--------------------
CREATE TABLE task (
id int,
name nvarchar(30),
type AS (CASE WHEN starttime > GetDate() THEN -1
WHEN endtime < GetDate() THEN 1
ELSE 0
END),
starttime datetime,
endtime datetime,
durationtime AS (endtime-starttime)
)
INSERT INTO task (id,name,starttime,endtime) VALUES(1,N'张三', '2014-07-04 10:00:00', '2014-07-04 16:00:00')
INSERT INTO task (id,name,starttime,endtime) VALUES(2,N'李四', '2014-07-07 10:00:00', '2014-07-07 16:00:00')
INSERT INTO task (id,name,starttime,endtime) VALUES(3,N'王五', '2014-08-01 10:00:00', '2014-08-01 16:00:00')
SELECT * FROM task