sql >> Database >  >> RDS >> Sqlserver

Zoeken tussen datums en tijden in SQL Server 2008

u moet kijken naar de datum-tijdnotaties die beschikbaar zijn in SQL Server:http:// msdn.microsoft.com/en-us/library/ms187928.aspx

yyyy-mm-dd hh:mi is wat je zou moeten gebruiken:

probeer:

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

in de bovenstaande query worden de tekenreeksen geconverteerd naar het datatype datetime als DateCreated is een datetime-kolom. en de zoekopdracht zal werken.

u kunt lokale variabelen van het datatype datetime maken en een query gebruiken zoals:

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]

Ik gebruik graag <, <=,>=of> omdat het meer flexibiliteit biedt dan BETWEEN en dwingt je na te denken over het wel of niet opnemen van eindpunten.

Een ander ding om te overwegen is het verkrijgen van alle gegevens van een volledige dag:

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


  1. Oproep naar opgeslagen procedure , wanneer procedurenaam in een variabele in mysql

  2. Stuur bestand met postbode naar Laravel API

  3. Tabelnaam tweemaal opgegeven, zowel als doel voor update als aparte bron voor gegevens

  4. Hoe de serialisatiegegevens in MySQL bij te werken