我想从中选择少于 7 天的所有[Orders]
记录[Submissiondate]
。
我完全被难住了。这是我正在执行的查询:
SELECT * FROM [Orders] WHERE ([SubmissionDate] < @SubmissionDate)
不工作。
我想从中选择少于 7 天的所有[Orders]
记录[Submissiondate]
。
我完全被难住了。这是我正在执行的查询:
SELECT * FROM [Orders] WHERE ([SubmissionDate] < @SubmissionDate)
不工作。
如果你的意思是你想要带有SubmissionDate
between@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
假设 sql 参数@SubmissionDate
是现在的日期(和时间)。您可以使用以下查询来返回[Orders]
过去 7 天内提交的内容:
SELECT * FROM [Orders] WHERE ([SubmissionDate] >= DATEADD(DD, -7, DATEADD(dd, 0, DATEDIFF(dd, 0, @SubmissionDate))))
此解决方案的两个重要说明:
[Orders]
“today”(直到执行查询的时间)。以下代码仅用于获取日期时间的日期“部分”(从其他SO 线程中提取)。
DATEADD(dd, 0, DATEDIFF(dd, 0, @SubmissionDate))
尝试这个
SELECT * FROM [Orders] WHERE [submission_date] < NOW() - 间隔 7 天;
你也可以试试这个DATEDIFF
SELECT * FROM [Orders] WHERE datediff(d,SubmissionDate,GETDATE()) > 7
其中 GetDate() 是今天的日期,并且d
是天数的差异
select datediff(d,'2012/06/23',GETDATE())
应该给你 7 因为它是 7 天前