Il est assez commun à ne veulent une date d'un datetime - vous devriez être en mesure de Google pour les spécificités de votre SGBDR (puisque vous ne le mentionnez pas). Le bit important est de faire votre demande SARGable en transformant aujourd'hui date - pas la date de la commande.
Pour MSSQL, quelque chose comme
SELECT DISTINCT CustomerID
FROM TableName
--I assume you want midnight orders as well - so use >=
Where OrderDate >= DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
travaillerait en prenant le nombre de jours est aujourd'hui de date 0 (DATEDIFF(dd, 0, GETDATE())
) et les rajoutant à ce jour 0 (DATEADD(dd, 0, x)
). C'est spécifique à T-SQL, cependant.
Si vous recherchez une date arbitraire, vous auriez encore transformez les deux arguments:
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)
SQL Server ne dispose pas d'une déclaration 'trunc'. – Eric
Wow. Je dois me rappeler que la prochaine fois que j'interviewer un candidat. Chaque mois, j'interview quelqu'un et j'entends quelque chose comme "SQL is SQL". Il ne semble pas important qu'ils utilisent SQL Server depuis des années et nous sommes un magasin Oracle. –