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