Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ottieni riga dove colonna datetime =oggi - SQL Server noob

In SQL Server 2008 avresti un nuovo DATE tipo di dati, che potresti utilizzare per ottenere ciò:

SELECT (list of fields)
FROM dbo.YourTable
WHERE dateValue BETWEEN 
   CAST(GETDATE() AS DATE) AND DATEADD(DAY, 1, CAST(GETDATE() AS DATE))

Il CAST(GETDATE() AS DATE) esegue il cast della data e dell'ora correnti su un valore di sola data, ad es. restituisce '2010-04-06' per il 6 aprile 2010. L'aggiunta di un giorno a questo fondamentalmente seleziona tutti i valori datetime di oggi.

In SQL Server 2005, non esiste un modo semplice per farlo:la soluzione più elegante che ho trovato qui è utilizzare la manipolazione numerica di DATETIME per ottenere lo stesso risultato:

SELECT (list of fields)
FROM dbo.YourTable
WHERE dateValue BETWEEN 
   CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME) AND 
   DATEADD(DAY, 1, CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME))