Pregunta

Supongamos que tengo una tabla que almacena los ID de pedido de los clientes. Tales como

| ID de cliente | ID de pedido | Fecha de pedido

¿Cómo puedo obtener todos los clientes que han pedido hoy?

También OrderDate sería un DateTime.

Algo como

SELECT DISTINCT CustomerID
FROM TableName
Where OrderDate > Today

Pero la última parte es lo que no puedo entender.

¿Fue útil?

Solución

Es bastante común que solo desees una fecha fuera de fecha y hora: deberías poder buscar en Google los detalles de tu RDBMS (ya que no lo mencionas). Lo importante es hacer su consulta SARGable transformando la fecha de de hoy 1 : no es la fecha del pedido.

Para MSSQL, algo como

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

funcionaría tomando el número de días que hoy es desde la Fecha 0 ( DATEDIFF (dd, 0, GETDATE ()) ) y agregándolos de nuevo a la Fecha 0 ( DATEADD (dd, 0 , x) ). Sin embargo, eso es específico de T-SQL.

1 Si estuviera buscando una fecha arbitraria, todavía transformaría ambos argumentos:

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)

Otros consejos

En Oracle, la declaración sería algo así como:

SELECT DISTINCT CustomerID  
FROM TableName  
Where OrderDate >= trunc(sysdate)

SQL-Server debería ser similar

SELECT DISTINCT CustomerID
FROM TableName
Where OrderDate = CAST(GetDate() AS NUMERIC)

O

SELECT DISTINCT CustomerID
FROM TableName
Where CAST(OrderDate AS NUMERIC) = CAST(GetDate() AS NUMERIC)

He intentado ver que devuelve el mismo número para la fecha dada con una hora diferente. Por lo tanto, debería funcionar cuando una fecha se convierte a su valor numérico.

SELECT CAST (0 AS DATETIME) devuelve 1/1/1900 12:00:00 AM

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top