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

Søg mellem datoer og klokkeslæt i SQL Server 2008

du bør se på de dato- og tidsformater, der er tilgængelige i SQL Server:http:// msdn.microsoft.com/en-us/library/ms187928.aspx

yyyy-mm-dd hh:mi er hvad du skal bruge:

prøv:

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

i ovenstående forespørgsel vil strengene blive konverteret til datetime datatype, hvis DateCreated er en dato-tid-kolonne. og forespørgslen vil virke.

du kan oprette lokale variabler af datetime-datatypen og bruge en forespørgsel som:

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]

Jeg kan godt lide at bruge <, <=,>=eller>, fordi det giver mere fleksibilitet end BETWEEN og tvinger dig til at tænke på at inkludere endepunkter eller ej.

En anden ting at overveje er at få alle data fra en hel 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. Sådan finder du kolonnenavne for alle tabeller i alle databaser i SQL Server

  2. pgAdmin - Deling af DB-forbindelsesdefinitioner

  3. Laravel SUM af flere felter returnerer null med rå forespørgsel

  4. Finde dato mellem startdato og slutdato