根据给定日期自动更改sql数据库中的值

是否可以自动更改sql中的值。 举个例子来说,这是一个租车数据库和一个客户想要为7月15日(现在是第4个)的汽车预订。 当我运行我的C#程序并点击一个按钮来保留它在7月15日(未来日期)的RentalDate列中的数据库中写的那个。现在可用性列中(可用汽车)它应保持为真,直到该日期( 15)然后应该自动更改为False。 有可能做那样的事吗?

我会考虑一个不同的设计,你保留一张预订桌和一张车桌。 然后,如果您预订汽车,您可以在时间范围内写一行到预订表。 然后,您可以检查此表以查看该车是否可用于任意请求的时间跨度。

您可以创建一个SQL代理作业 ,该作业执行存储过程以按给定的计划执行更新,即每天午夜。

存储过程代码将包含类似这样的内容,以将RentalDate与今天的日期进行比较以执行更新:

 UPDATE RentalsTable SET Availability = 0 -- False as a bit WHERE RentalDate = CAST(GETDATE() as DATE) -- takes date portion of GETDATE() 

用于创建运行存储过程的作业的示例脚本如下所示:

 --Add a job EXEC dbo.sp_add_job @job_name = N'MY UPDATE JOB'; --Add a job step named process step. This step runs the stored procedure EXEC sp_add_jobstep @job_name = N'MY UPDATE JOB', @step_name = N'process step', @subsystem = N'TSQL', @command = N'EXEC [YOUR_STORED_PROC_TO_PERFORM_UPDATE]' --Schedule the job at a specified date and time exec sp_add_jobschedule @job_name = N'MY UPDATE JOB', @name = 'MySchedule', @freq_type=1, @active_start_date = '2014-07-03', @active_start_time = '00:00:00' -- Add the job to the SQL Server Server EXEC dbo.sp_add_jobserver @job_name = N'MY UPDATE JOB', @server_name = N'[SERVER NAME]' 

或者,您可以使用Management Studio和向导来创建预定作业。

以上脚本改编自以下网站 ,该网站还提供了通过管理工作室设置工作的分步指南。

进一步阅读: 如何:创建SQL Server代理作业(Transact-SQL)