SQL语句帮助--选择今天下单的客户

Dev*_*Dev 5 sql select datetime

假设我有一个存储客户订单 ID 的表。例如

| 客户 ID | 订单编号 | 订购日期

如何获取今天下单的所有客户?

OrderDate 也将是一个 DateTime。

就像是

SELECT DISTINCT CustomerID
FROM TableName
Where OrderDate > Today
Run Code Online (Sandbox Code Playgroud)

但最后一部分是我无法弄清楚的。

Mar*_*ett 4

仅想要日期时间之外的日期是相当常见的 - 您应该能够通过 Google 搜索 RDBMS 的详细信息(因为您没有提及)。重要的一点是通过将今天的日期1(而不是订单日期)转换来使您的查询可 SARGable 。

对于 MSSQL,类似

SELECT DISTINCT CustomerID
FROM TableName
--I assume you want midnight orders as well - so use >=
Where OrderDate >= DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
Run Code Online (Sandbox Code Playgroud)

可以通过从日期 0 ( DATEDIFF(dd, 0, GETDATE())) 获取今天的天数并将其加回到日期 0 ( DATEADD(dd, 0, x))。不过,这是 T-SQL 特定的。

1如果您要搜索任意日期,您仍然需要转换两个参数:

SELECT DISTINCT CustomerID
FROM TableName
Where 
    OrderDate >= DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
    --You *do not* want midnight of the next day, as it would duplicate orders
    AND OrderDate < DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()) + 1)
Run Code Online (Sandbox Code Playgroud)