Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Pesquisar entre datas e horas no SQL Server 2008


você deve observar os formatos de data e hora disponíveis no SQL Server:http:// msdn.microsoft.com/en-us/library/ms187928.aspx

yyyy-mm-dd hh:mi é o que você deve usar:

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

na consulta acima, as strings serão convertidas para o tipo de dados datetime se DateCreated é uma coluna de data e hora. e a consulta funcionará.

você pode criar variáveis ​​locais do tipo de dados datetime e usar uma consulta como:
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]

Gosto de usar <, <=,>=ou> porque permite mais flexibilidade do que BETWEEN e obriga você a pensar em incluir endpoints ou não.

Outra coisa a considerar é obter todos os dados de um dia completo:
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