2010-03-17 2 views

ответ

14

вы должны смотреть на форматы времени даты, доступные в 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' 

в вышеуказанном запросе строки будут co nverted to datetime, если DateCreated - столбец datetime. и запрос будет работать.

можно создавать локальные переменные типа данных даты и времени и использовать запрос как:

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] 

Мне нравится использовать <, < =,> = или>, поскольку он обеспечивает большую гибкость, чем 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>[email protected] AND DateCreated<@EndDate+1 
5

Попробуйте это:

SELECT 
    * 
FROM 
    Records 
WHERE 
    DateCreated BETWEEN @Date1 AND @Date2 
+0

благодарственное за помощью, но как писать дату & время? Дата: 30/02/2007, время: 10:32 и дата: 21/06/2008, время: 14:19 – Gold

+0

В приведенном выше примере переменные @ Date1 и @ Date2 имеют тип datetime Это означает, что вы можете назначить дата и время для них вот так: 'DECLARE @ Date1 datetime SET @ Date1 = '2010-03-18 10: 52'' –

Смежные вопросы