SQL Server DATETIME,在当天晚上10点之前的当天晚上10点之前自动填写

时间:2018-04-06 00:34:51

标签: sql sql-server

表格结构:

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点之前自动填充,并且状态填写为“关闭”。

2 个答案:

答案 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