Ho appena funzionare questa domandaSQL query di ricerca Data utilizzando Tra
Select *
from ProjectData
where logtime between '2012-09-25 12:00:00.000' and '2012-09-25 12:59:59.999'
order by LogTime
nel tentativo di trovare il record di tutti per 12 ore, abbiamo registrare ogni secondo, quindi mi aspettavo 3600 record, ma con mia grande sorpresa ho ottenuto record 3601 e l'ultimo tempo record è stato
2012-09-25 13:00:00.000
Qualche idea del motivo per cui questo record viene selezionato? Anche se Between
include i valori specificati, questo valore è superiore alla condizione. Sto usando SQL Server 2012 Express Edition.
Potrebbe essere che l'acuracy del vostro campo datetime della tabella non consente una sottile distinzione, quali? I. e. può davvero mantenere date come '2012-09-25 12: 59: 59.999' e' 2012-09-25 13: 00: 00.000' a parte? Potrebbe essere necessario limitare la ricerca entro il 2012-09-25 12: 59: 59' come condizione superiore? – cars10m
Ho un tipo di dati come DateTime e quando interrogo la tabella, viene visualizzato il tempo in millisecondi. Quindi immagino che li immagazzini così? O –
'DATETIME' ha una precisione di 3,33ms - quindi nel tuo caso il tuo secondo valore sarà" arrotondato "a' 2012-09-25 13: 00: 00,000' poiché 'DATETIME' può contenere valori che terminano con'. 990', '.993',' .997' e '.000'. O usi 'DATETIME2' invece (precisione molto più alta!), O usa' '2012-09-25 12: 59: 59.997'' per il tuo secondo valore se sei bloccato su 'DATETIME' –