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):

  1. Classico, ovvero la trasformazione in stringa e la successiva conversione in datetime:

    SELECT CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 120), 120)
    

     

  2. 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() ) ) )
    

     

  3. 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

 
x