вы должны посмотреть форматы даты и времени, доступные в SQL Server: http://msdn.microsoft.com/en-us/library/ms187928.aspx
yyyy-mm-dd hh:mi
- это то, что вы должны использовать:
попробовать:
SELECT
*
FROM Records
WHERE DateCreated>='2007-02-30 10:32' AND DateCreated<='2008-06-21 14:19'
в приведенном выше запросе строки будут преобразованы в тип данных datetime, если DateCreated
является столбцом datetime. и запрос будет работать.
Вы можете создавать локальные переменные типа данных datetime и использовать запрос, подобный следующему:
DECLARE @StartDate datetime, @EndDate datetime
SELECT @StartDate='2007-02-30 10:32', @EndDate='2008-06-21 14:19'
SELECT
*
FROM Records
WHERE DateCreated>=@StartDate AND DateCreated<=@EndDate
Мне нравится использовать <, <=,> = или>, потому что он обеспечивает большую гибкость, чем BETWEEN
, и заставляет задуматься о включении конечных точек или нет.
Еще одна вещь, которую следует учитывать, это получение всех данных за полный день:
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>=@StartDate AND DateCreated<@EndDate+1