Eliminare ore, minuti, secondi e millisecondi da un datetime SQL Server
Scritto da
Antonio Giglio il
venerdì 18 marzo 2011
•
Linguaggio:
• Livello: 100
Esistono principalmente 3 metodi per estrarre la data da un
datetime (cioè ricavare la parte relativa ad una data a partire da
un datetime):
- Classico, ovvero la trasformazione in stringa e la successiva
conversione in datetime:
SELECT CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 120), 120)
- Utilizzare la conversione in float della data per poi
recuperare le sole cifre intere e la successiva conversione in
datetime:
SELECT CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, GETDATE() ) ) )
- Aggiungere al giorno "0", la quantità di giorni estratti a
partire dal giorno "0" del datetime:
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE() ), 0)
Nei precedenti esempi è stata utilizzata la data corrente
(GETDATE()) ma può essere utilizzato un qualsiasi campo di tipo
DATETIME.
Il metodo più lento è quello che sfrutta la conversione in
stringa (1), mentre il metodo più veloce è aggiungere i giorni a
partire dal giorno "0" (3).
In Sql Server 2008 esiste un quarto metodo che sfrutta il nuovo
tipo Date:
SELECT CONVERT(DATETIME,CONVERT(DATE,GETDATE()))
In quest'ultimo caso abbiamo effettuato un'ulteriore
conversione a datetime per ottenere lo stesso risultato dei tre
precedenti metodi, ma non è necessario in quanto il risultato della
prima conversione è già una data senza ore, minuti, secondi e
millisecondi.
Tags: sql server