需要帮助提取前2天的SQL数据

时间:2019-07-09 20:59:56

标签: sql sql-server date

我需要每晚运行一个SQL脚本,以提取前两天的数据。例如:7月9日凌晨1点,脚本将运行并需要提取7月8日和7月7日的数据。7月10日凌晨1点,它需要提取7月9日和7月8日的数据,等等。

该脚本具有功能性,因为它可以正确提取固定日期范围内的数据(通过在脚本中包括实际日期范围),但是我不知道如何使它执行“前2天”部分。

弄清楚这一点超出了我的范围!谁能提供指导?

使用SQL Server 2014

2 个答案:

答案 0 :(得分:1)

您可以这样做:

where datecol >= convert(date, dateadd(day, -2, getdate())) and
      datecol < convert(date, getdate())

也就是说,对于将这种逻辑直接放入查询中,我会非常谨慎。我将在SQL Server中创建一个存储过程,并使其带有@fromdate@todate参数。

然后,安排执行上述计算并使用正确的参数调用存储过程的作业。

有一天,当服务器关闭或逻辑故障时,您将可以自行指定日期范围。

答案 1 :(得分:0)

我将创建三个变量。

  • @today:是当前日期时间转换为将其设置为午夜的日期
  • @startDate:开始/开始日期,我将使用DATEADD函数减去两天
  • @endDate:您可以从今天开始减去1秒的结束日期

这应该为您提供2019-07-07 00:00:00.0002019-07-08 23:59:59.000的日期范围

DECLARE @today DATETIME = CAST(GETDATE() AS DATE);
DECLARE @startDate DATETIME = DATEADD(DAY, -2, @today);
DECLARE @endDate DATETIME = DATEADD(SECOND, -1, @today);

在处理日期时,时间通常非常非常重要,请确保您的开始日期从一天的开始开始,结束日期在一天的结束时结束!

您的查询将如下所示:

SELECT *
FROM my_table
WHERE my_date_column BETWEEN @startDate AND @endDate