Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Cerca tra date e orari in SQL Server 2008

dovresti esaminare i formati di data e ora disponibili in SQL Server:http:// msdn.microsoft.com/en-us/library/ms187928.aspx

yyyy-mm-dd hh:mi è quello che dovresti usare:

prova:

SELECT
    *
    FROM Records
    WHERE DateCreated>='2007-02-30 10:32' AND DateCreated<='2008-06-21 14:19'

nella query precedente le stringhe verranno convertite nel tipo di dati datetime se DateCreated è una colonna data/ora. e la query funzionerà.

puoi creare variabili locali di tipo di dati datetime e utilizzare una query come:

DECLARE @StartDate datetime, @EndDate datetime

SELECT @StartDate='2007-02-30 10:32', @EndDate='2008-06-21 14:19'

SELECT
    *
    FROM Records
    WHERE DateCreated>[email protected] AND DateCreated<[email protected]

Mi piace usare <, <=,>=o> perché consente una maggiore flessibilità rispetto a BETWEEN e ti costringe a pensare di includere o meno gli endpoint.

Un'altra cosa da considerare è ottenere tutti i dati da un giorno intero:

DECLARE @StartDate datetime, @EndDate datetime

--set the days you want
SELECT @StartDate='2007-02-30 10:32', @EndDate='2008-06-21 14:19'

--remove the time
SELECT @StartDate=DATEADD(day,DATEDIFF(day,0,@StartDate),0), @EndDate=DATEADD(day,DATEDIFF(day,0,@EndDate),0)

--get everything on '2007-02-30' up to the end of the day on '2008-06-21'
SELECT
    *
    FROM Records
    WHERE DateCreated>[email protected] AND DateCreated<@EndDate+1