sql >> Databasteknik >  >> RDS >> Sqlserver

Sök mellan datum och tider i SQL Server 2008

du bör titta på datum- och tidsformaten som är tillgängliga i SQL Server:http:// msdn.microsoft.com/en-us/library/ms187928.aspx

yyyy-mm-dd hh:mi är vad du ska använda:

försök:

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

i ovanstående fråga kommer strängarna att konverteras till datetime-datatyp om DateCreated är en kolumn för datum och tid. och frågan kommer att fungera.

du kan skapa lokala variabler av datetime-datatyp och använda en fråga 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]

Jag gillar att använda <, <=,>=eller> eftersom det ger mer flexibilitet än BETWEEN och tvingar dig att tänka på att inkludera slutpunkter eller inte.

En annan sak att tänka på är att få all data från 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. Kör SQL skriven i en textruta med VBA

  2. PHP:mysql_connect returnerar inte FALSK

  3. Hur man fixar en långsam implicit fråga på pg_attribute-tabellen i Rails

  4. ORACLE SQL listagg funktion