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

本文关键字:sql 数据库 日期 | 更新日期: 2023-09-27 18:11:34

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

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

我会考虑另一种设计,即保留一个预订表和一个汽车表。然后,如果您预订了一辆车,您可以用时间跨度写一行到预订表中。然后,您可以根据该表检查汽车在任意请求的时间范围内是否可用。

您可以创建一个SQL Agent Job,该Job执行一个存储过程,以按照给定的时间表(即每天午夜)执行更新。

存储过程代码将包含如下内容,用于比较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)