表格结构:
ID int
status varchar (10)
DATE_CREATED datetime
DATE_CLOSED datetime
填写DATE_CREATED
的存储过程:
CREATE PROCEDURE [dbo].[...]
@ID INT,
@STATUS VARCHAR(10) = 'Open',
@DATE_CREATED DATETIME = NULL
AS
SET NOCOUNT ON
UPDATE table
SET STATUS = @STATUS,
DATE_CREATED = COALESCE(@DATE_CREATED, GETDATE())
FROM table
从那时起,DATE_CLOSED
列就是NULL
。我希望自动在列中添加DATE_CREATED
列的日期,但是时间为晚上10点,并且应该在晚上10点之前自动填充,并且状态填写为“关闭”。
答案 0 :(得分:0)
你可以计算晚上10点。在当前日期使用:
dateadd(hour, 22, cast(cast(getdate() as date) as datetime))
这很容易添加到update
中。但是,我并不是100%肯定,这就是你所要求的。
答案 1 :(得分:0)
如果您希望安排查询或存储过程在当天的设定时间运行,那么通常的方法是使用具有相当复杂的作业调度功能的SQL Server代理。
请查看此问题,了解如何运行日常工作的示例。 how to schedule a job for sql query to run daily?
以下是Microsoft的文档:https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job