T-SQL per tagliare un datetime alla data più vicina?
-
22-08-2019 - |
Domanda
Duplica di Qual è il modo migliore per rimuovere la parte relativa all'ora di un valore datetime (SQL Server) ?
Ho una colonna che tiene traccia quando le cose vengono creati utilizzando un datetime, ma mi piacerebbe per generare un rapporto che li raggruppa per giorno, quindi ho bisogno di un modo di annullamento dei fuori la componente temporale di una colonna datetime.
Come posso fare questo?
Soluzione
Un modo è quello di cambiare getdate()
al nome della colonna,
select dateadd(dd, datediff(dd, 0, getdate())+0, 0)
Altri suggerimenti
Perché non convertire dritto fino ad oggi:
select convert(date, getdate())
Questa tronca giorni, non giri. Per Giorni rotonde fare questo:
select convert(date, getdate() + 0.5)
Ecco un'altra soluzione:
SELECT CAST( FLOOR( CAST( GETDATE() AS float) ) AS smalldatetime)
Questo è un modo semplice per ottenere la data (come una stringa) da un datetime:
convert(varchar, <the date field/value/etc>, 101)
Ma si noti che l'ordinazione su questo campo sarà alfabetico piuttosto che per data dal momento che è ormai una stringa
Sì. Ci sono molti formati tra cui scegliere quindi mi collego al posto.
http://library.cirr.com /Microsoft/SQL-Server-v7/html/ca-co_1.htm
Se si desidera azzerare il tempo come tuo post implica, si può provare questo:
select cast(convert(varchar, getdate(), 101) as datetime)
declare @CurrentDate datetime
set @CurrentDate = dateadd(dd, datediff(dd, 0, getdate()), 0)
- oppure -
select dateadd(dd, datediff(dd, 0, MyDateColumn), 0) as DateOnly
from tblX
Nelle mie ricerche mi sono imbattuto nel seguente soluzione, le strisce tempo fuori solo il tempo UTC, ma ho trovato interessante, così ho pensato che qualcun altro avrebbe fatto troppo:
FUNCTION TrimDate(@dt AS DATETIME) RETURNS DATETIME
BEGIN
RETURN CAST(CAST((@dt - 0.500000038580247) AS INT) AS DATETIME)
END
Vorrei presumere che corre velocemente dal momento che tutto ciò che sta facendo è l'arrotondamento e la colata.
faccio semplicemente cast (GETDATE () come data)