我的数据库中有一张表。该表称为Order。它有这样的结构
我需要获得过去两周的所有订单。我怎么做?我不明白如何在SQL中以这种方式使用日期。
谢谢!
答案 0 :(得分:1)
您可以将这样的内容合并到WHERE
子句中:
WHERE OrderDate >= DATEADD(day,-14,GetDate())
(即OrderDate比今天减去14天更近。)
[我这里无权访问SQL Server,所以我无法检查它 - 但它可能工作:)]
编辑:根据OrderDate的确切数据类型,我不确定在您拥有的情况下会发生什么情况。两个星期前的一半订单,所以你可能想检查一下会发生什么。
答案 1 :(得分:1)
marnir回答是这样做的方法,但这是另一个选择,不包括OrderDate>今天:
select * from Order
where [OrderDate]
BETWEEN DATEADD(dd, -14, GetDate()) AND GetDate()
答案 2 :(得分:1)
以下是检索上一个2 weeks
中的订单的另一种可能方法。这假设OrderDate
是数据类型datetime
的列。屏幕截图# 1 显示名为dbo.[Order]
的表中的示例数据,该表类似于您的要求,并针对该表数据输出以下查询。此查询在SQL Server 2008 R2中进行了测试,但也与其他SQL Server版本兼容。
SELECT Id
, CustomerId
, OrderDate
, Quantity
, Price
FROM dbo.[Order]
WHERE DATEDIFF(WEEK, OrderDate, GETDATE()) <= 2
希望有所帮助。
屏幕截图# 1