2010-03-17 90 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' 

在上面的查询中字符串将被转换为d如果DateCreated是日期时间列,则为atetime数据类型。和查询将工作。

您可以创建日期时间数据类型的局部变量和使用查询,如:

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

感谢对帮助,但如何写的日期和时间? date:30/02/2007,time:10:32 and date:21/06/2008,time:14:19 – Gold 2010-03-17 14:15:00

+0

在上面的例子中,@ Date1和@ Date2变量的类型是datetime 这意味着你可以赋值日期和时间像这样: 'DECLARE @ Date1 datetime SET @ Date1 ='2010-03-18 10:52'' – 2010-03-18 06:58:03

相关问题