Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Rechercher entre les dates et les heures dans SQL Server 2008

vous devriez regarder les formats de date et d'heure disponibles dans SQL Server :http:// msdn.microsoft.com/en-us/library/ms187928.aspx

yyyy-mm-dd hh:mi est ce que vous devez utiliser :

essayez :

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

dans la requête ci-dessus, les chaînes seront converties en type de données datetime si DateCreated est une colonne datetime. et la requête fonctionnera.

vous pouvez créer des variables locales de type datetime et utiliser une requête comme :

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]

J'aime utiliser <, <=,>=ou> car cela permet plus de flexibilité que BETWEEN et vous oblige à penser à inclure ou non des points de terminaison.

Une autre chose à considérer est d'obtenir toutes les données d'une journée complète :

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