In SQL Server 2005 come posso ottenere la data corrente senza la parte oraria? Ho usato GETDATE()
ma vorrei che avesse un tempo di 00: 00: 00.0
In SQL Server 2005 come posso ottenere la data corrente senza la parte oraria? Ho usato GETDATE()
ma vorrei che avesse un tempo di 00: 00: 00.0
Risposte:
Il più veloce se devi iterare su un recordset e non hai una data in SQL Server 2008
SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
Due risposte diverse ed eccellenti su StackOverflow lo confermano: una , due
Le conversioni di Varchar sono uno dei modi peggiori per farlo. Certo, per un valore potrebbe non importare, ma è una buona abitudine entrare.
In questo modo è anche deterministico, ad esempio se si desidera indicizzare una colonna calcolata. Anche le persone che scrivono libri su SQL Server rimangono sorpresi dalle conversioni del datetime
Questa tecnica è anche estensibile.
DATEADD(day, DATEDIFF(day, 0, GETDATE()), -1)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), -1)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 31)
Modificare:
Come ho già detto sul determinismo, i metodi varchar non sono sicuri se non si utilizza lo stile 112.
Altre risposte qui indicano che non lo avresti mai applicato a una colonna. Questo è corretto, ma potresti voler selezionare 100k righe o aggiungere una colonna calcolata o GROUP BY solo per data. Quindi devi usare questo metodo.
L'altra risposta menziona anche lo stile 110. Questa non è la lingua o SET DATEFORMAT sicuro e fallisce con l'impostazione della lingua "britannica". Consulta la guida definitiva ai tipi di dati datetime di Tibor Karaszi.