在SQL Server 2008中查询具有日期/时间过滤器的表

时间:2011-06-05 11:30:57

标签: sql-server

我的数据库中有一张表。该表称为Order。它有这样的结构

  • ID
  • 客户id
  • 订购日期
  • 数量
  • 价格

我需要获得过去两周的所有订单。我怎么做?我不明白如何在SQL中以这种方式使用日期。

谢谢!

3 个答案:

答案 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

1