我想从[Orders]
中选择[Submissiondate]
少于7天的所有记录。
我完全难过了。这是我正在执行的查询:
SELECT * FROM [Orders] WHERE ([SubmissionDate] < @SubmissionDate)
不起作用。
答案 0 :(得分:5)
如果您的意思是希望SubmissionDate
和@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
答案 1 :(得分:1)
假设sql参数@SubmissionDate
现在是日期(和时间)。您可以使用以下查询返回过去7天内提交的[Orders]
:
SELECT * FROM [Orders] WHERE ([SubmissionDate] >= DATEADD(DD, -7, DATEADD(dd, 0, DATEDIFF(dd, 0, @SubmissionDate))))
对此解决方案的两个重要评论:
[Orders]
'今天'(直到查询执行的时间)。以下代码仅用于获取日期时间的“部分”日期(从其他SO thread中提取)。
DATEADD(dd, 0, DATEDIFF(dd, 0, @SubmissionDate))
答案 2 :(得分:0)
您也可以尝试此DATEDIFF
SELECT * FROM [Orders] WHERE datediff(d,SubmissionDate,GETDATE()) > 7
其中GetDate()是今天的日期,而d
是天数的差异
select datediff(d,'2012/06/23',GETDATE())
应该给你7因为它是7天前
答案 3 :(得分:0)
试试这个
SELECT * FROM [Orders] WHERE [submission_date]&lt;现在() - INTERVAL 7 DAY;