如何比较两个日期,SQL/SSIS任务

如何比较两个日期,SQL/SSIS任务,sql,random,ssis,sample,getdate,Sql,Random,Ssis,Sample,Getdate,因此,我有一个任务,它随机抽取前一天表格结果的20%作为对照组。这些结果被放入一个表格中,然后放入一个.CSV文件中供雇主使用 这非常有效。唯一的问题是,它存在于一组经常被测试的任务中,这意味着当任务被重复时,更多的随机数据被转储到文件中——这意味着手动删除行。我在找解决办法 由于该进程每天运行一次,因此唯一的键是TransactionDateID,格式为INT(20150603)。我需要对照该专栏进行检查,以确保当天没有运行任何内容。问题更加严重,因为它涉及到昨天的记录 比如说。为了检查tod

因此,我有一个任务,它随机抽取前一天表格结果的20%作为对照组。这些结果被放入一个表格中,然后放入一个.CSV文件中供雇主使用

这非常有效。唯一的问题是,它存在于一组经常被测试的任务中,这意味着当任务被重复时,更多的随机数据被转储到文件中——这意味着手动删除行。我在找解决办法

由于该进程每天运行一次,因此唯一的键是TransactionDateID,格式为INT(20150603)。我需要对照该专栏进行检查,以确保当天没有运行任何内容。问题更加严重,因为它涉及到昨天的记录

比如说。为了检查todays date是否已运行,将使用getDate()获取今天的日期,然后转换为INT(20150604)。但我不能简单地检查是否存在1的数字差异,因为一旦月份转换,简单的+1将使整个事情失去正常:

(20150631)+1=/=(20150701)

我只是想知道这是否会因为变量类型的不同而前后转换,或者如果当天的任务已经完成,我是否可以做一些事情来添加一个列,类似这样的事情


一位同事建议使用MAX(TransactionDateID),然后根据该列检查getDate()

不幸的是,第二天我遇到了一个问题:

2015-06-04-09:30时的初始任务运行:ss:mm

2015-06-04-11:45:ss:mm等2015-06-04-09:30:ss:mm,不要跑


2015-06-05-09:30:ss:mm等2015-06-04-09:30:ss:mm,我想让它运行…

要将您的一天转换为格式化的整数,请尝试以下操作:

DECLARE @today date = getdate()
select year(@today) * 10000 + month(@today) * 100 + day(@today)

现在还不清楚你想做什么,但是把昨天表示为INT的通常方法是
CONVERT(INT,CONVERT(VARCHAR(8),DATEADD(d,-1,GETDATE()),112))
使用DATEADD(day,1,GETDATE()),然后将其转换为intNick,这样可以得到昨天的INT,然后我可以将其与TransactionDateID进行比较,这也是昨天的整数。谢谢你。现在我只需要弄清楚当它们相等时如何“不继续”的逻辑。只需使用EXEC SQL任务来运行查询,如果返回了任何记录,您就知道查询已经运行了,因此不需要执行下一步,但如果没有返回任何记录,则运行任务来填充20%,而为true,我看不出这是如何回答这个问题的。