2009-02-11 10 views

risposta

15

Un modo è quello di cambiare getdate() al nome della colonna,

select dateadd(dd, datediff(dd, 0, getdate())+0, 0) 
1

Sì. Ci sono molti formati tra cui scegliere, quindi lo collegherò.

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) 
+1

convertito (datetime, convertire (varchar, GETDATE(), 101)) –

+0

collegamento interrotto. Nuovo collegamento per la pagina http://library.cirr.com/Microsoft/SQL-Server-v7/html/ca-co_1.htm – monkeypushbutton

1

convert (varchar, la data di campo/valore/etc, 101)

Questo è il modo più semplice per ottenere la data da un datetime.

0
declare @CurrentDate datetime 
set @CurrentDate = dateadd(dd, datediff(dd, 0, getdate()), 0) 

--ovvero--

select dateadd(dd, datediff(dd, 0, MyDateColumn), 0) as DateOnly 
from tblX 
0

Nelle mie ricerche mi sono imbattuto nel seguente soluzione, si spoglia tempo fuori dall'ora UTC, ma l'ho trovato interessante, quindi ho pensato anche a qualcun altro:

FUNCTION TrimDate(@dt AS DATETIME) RETURNS DATETIME 
BEGIN 
    RETURN CAST(CAST((@dt - 0.500000038580247) AS INT) AS DATETIME) 
END 

Suppongo che funzioni rapidamente poiché tutto ciò che sta facendo è l'arrotondamento e il lancio.

5

Ecco un'altra soluzione:

SELECT CAST(FLOOR(CAST(GETDATE() AS float)) AS smalldatetime) 
25

Perché non convertire dritto fino ad oggi:

select convert(date, getdate()) 

Questo tronca giorni, non giri. Per Giorni rotonde fare questo:

select convert(date, getdate() + 0.5) 
+1

Facilmente la migliore risposta per la sua semplicità e chiarezza. –

+6

Non se si utilizza SqlServer 2005 – TheMoot

+0

@TheMoot: perché no? – nalply