sql >> Databáze >  >> RDS >> Sqlserver

Vyhledávání mezi daty a časy v SQL Server 2008

měli byste se podívat na formáty data a času dostupné na serveru SQL:http:// msdn.microsoft.com/en-us/library/ms187928.aspx

yyyy-mm-dd hh:mi je to, co byste měli použít:

zkuste:

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

ve výše uvedeném dotazu budou řetězce převedeny na datový typ datetime, pokud DateCreated je sloupec datum a čas. a dotaz bude fungovat.

můžete vytvořit lokální proměnné datového typu datetime a použít dotaz jako:

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]

Rád používám <, <=,>=nebo>, protože umožňuje větší flexibilitu než BETWEEN a nutí vás přemýšlet o zahrnutí koncových bodů nebo ne.

Další věcí, kterou je třeba zvážit, je získání všech dat za celý den:

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. PostgreSQL procedurální jazyk C nenalezen

  2. Jak uložím datum UTC ISO8601 do databáze MySQL?

  3. Vraťte řádky v náhodném pořadí

  4. jak zkontrolovat všechna omezení na stole v oracle