5

我想从中选择少于 7 天的所有[Orders]记录[Submissiondate]

我完全被难住了。这是我正在执行的查询:

SELECT * FROM [Orders] WHERE ([SubmissionDate] < @SubmissionDate)

不工作。

4

4 回答 4

5

如果你的意思是你想要带有SubmissionDatebetween@SubmissionDate和的行@SubmissionDate - 7 days,那么这就是我在 Transact-SQL 中实现它的方式:

WHERE [SubmissionDate] BETWEEN DATEADD(DAY, -7, @SubmissionDate)
                           AND @SubmissionDate

请注意,这BETWEEN意味着>=<=。如果您需要严格的不等式,请将其设置为:

WHERE [SubmissionDate] > DATEADD(DAY, -7, @SubmissionDate)
  AND [SubmissionDate] < @SubmissionDate
于 2012-06-30T22:29:38.587 回答
1

假设 sql 参数@SubmissionDate是现在的日期(和时间)。您可以使用以下查询来返回[Orders] 过去 7 天内提交的内容

SELECT * FROM [Orders] WHERE ([SubmissionDate] >= DATEADD(DD, -7, DATEADD(dd, 0, DATEDIFF(dd, 0, @SubmissionDate))))

此解决方案的两个重要说明:

  1. 时间“部分”正在从@SubmissionDate 中删除。
  2. 由于没有“Date To”限制,do包括提交的[Orders]“today”(直到执行查询的时间)。

以下代码仅用于获取日期时间的日期“部分”(从其他SO 线程中提取)。

DATEADD(dd, 0, DATEDIFF(dd, 0, @SubmissionDate))
于 2012-07-01T11:39:44.543 回答
1

尝试这个

SELECT * FROM [Orders] WHERE [submission_date] < NOW() - 间隔 7 天;

于 2017-09-21T08:25:50.933 回答
0

你也可以试试这个DATEDIFF

SELECT * FROM [Orders] WHERE  datediff(d,SubmissionDate,GETDATE()) > 7

其中 GetDate() 是今天的日期,并且d是天数的差异

select datediff(d,'2012/06/23',GETDATE())

应该给你 7 因为它是 7 天前

于 2012-06-30T19:02:51.600 回答