SQL Server过程-每天表-每月保存一次历史记录

SQL Server过程-每天表-每月保存一次历史记录,sql,sql-server,stored-procedures,history,Sql,Sql Server,Stored Procedures,History,我有一个在SQL Server中运行的过程。我想每天运行这个程序。哪一个将每天生成输出表 然而,我只想每月记录一次历史。我尝试了以下步骤,但它每天都记录历史 我如何修改它的方式;此表应每天创建,但我每月只能保存一次历史记录,例如在每个月的最后一天 DECLARE @today AS DATE = CAST(GETDATE() AS DATE) IF OBJECT_ID('[CI_Temp].[dbo].[Items_Scored_With_History]', 'U') IS NULL

我有一个在SQL Server中运行的过程。我想每天运行这个程序。哪一个将每天生成输出表

然而,我只想每月记录一次历史。我尝试了以下步骤,但它每天都记录历史

我如何修改它的方式;此表应每天创建,但我每月只能保存一次历史记录,例如在每个月的最后一天

DECLARE @today AS DATE = CAST(GETDATE() AS DATE)

IF OBJECT_ID('[CI_Temp].[dbo].[Items_Scored_With_History]', 'U') IS NULL
    CREATE TABLE [CI_Temp].[dbo].[Items_Scored_With_History]
    (
        id         INT          NOT NULL,
        sub        VARCHAR(255) NOT NULL,
        actual     VARCHAR(255) NOT NULL,
        preds      VARCHAR(255) NOT NULL,
        prob       VARCHAR(255) NOT NULL,
        pred_eval  VARCHAR(255) NOT NULL,
        score_date DATETIME     NOT NULL,
    )
ELSE

DELETE FROM [CI_Temp].[dbo].[Items_Scored_With_History]
WHERE score_date = @today;

INSERT INTO [CI_Temp].[dbo].[Items_Scored_With_History]
SELECT id,
   sub,
   actual,
   preds,
   prob,
   pred_eval,
   @today AS score_date,
FROM [CI_Temp].[dbo].[Items_Scored_With_History] WITH (NOLOCK)

任何帮助都将不胜感激-提前感谢

如果您使用的是SQL Server 2012或比SQL Server更新的版本

你可以确保今天的天气是否在月底

DECLARE @today AS DATE = CAST(GETDATE() AS DATE)

IF EOMONTH(@today, 0)=convert(date, GETDATE()) BEGIN 
  PRINT 'Today is end of months'
        --your script will be here. 
  END 
  ELSE
  PRINT 'Today is not end of the month'

EOMONTH()
可从SQL Server获得(从2012年开始)。@Başar Kaya很抱歉太天真了。我应该在上述程序中添加此条件。请您详细说明并帮助我嵌入建议条件,以便我了解工作程序。谢谢advance@JamesTaylor我编辑了我的答案,它显示了您可以移动到脚本的位置。