Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Suche zwischen Datum und Uhrzeit in SQL Server 2008

Sie sollten sich die in SQL Server verfügbaren Datumszeitformate ansehen:http:// msdn.microsoft.com/en-us/library/ms187928.aspx

yyyy-mm-dd hh:mi sollten Sie verwenden:

versuchen:

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

In der obigen Abfrage werden die Zeichenfolgen in den Datetime-Datentyp konvertiert, wenn DateCreated ist eine datetime-Spalte. und die Abfrage funktioniert.

Sie können lokale Variablen vom Datentyp datetime erstellen und eine Abfrage verwenden wie:

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]

Ich verwende gerne <, <=,>=oder>, weil es mehr Flexibilität bietet als BETWEEN und zwingt Sie, darüber nachzudenken, ob Sie Endpunkte einbeziehen oder nicht.

Eine andere zu berücksichtigende Sache ist, alle Daten eines ganzen Tages zu erhalten:

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