【发布时间】:2010-03-17 13:56:59
【问题描述】:
我需要在日期和时间之间进行搜索。
例如,在date: 30/02/2007, time: 10:32 和date: 21/06/2008, time: 14:19 之间
对此最简单的查询是什么?
提前致谢。
【问题讨论】:
标签: sql-server-2008
我需要在日期和时间之间进行搜索。
例如,在date: 30/02/2007, time: 10:32 和date: 21/06/2008, time: 14:19 之间
对此最简单的查询是什么?
提前致谢。
【问题讨论】:
标签: sql-server-2008
您应该查看 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'
在上述查询中,如果DateCreated 是日期时间列,则字符串将转换为日期时间数据类型。并且查询将起作用。
您可以创建日期时间数据类型的局部变量并使用如下查询:
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
【讨论】:
yyyy-MM-dd hh:mm:P
试试这个:
SELECT
*
FROM
Records
WHERE
DateCreated BETWEEN @Date1 AND @Date2
【讨论】:
DECLARE @Date1 datetime SET @Date1 = '2010-03-18 10:52'