在SQL Server 2008中搜索日期和时间

Gol*_*old 10 sql-server-2008

我需要在日期和时间之间进行搜索.

例如,在date: 30/02/2007, time: 10:32和之间date: 21/06/2008, time: 14:19

对此最简单的查询是什么?

提前致谢.

KM.*_*KM. 16

您应该查看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'
Run Code Online (Sandbox Code Playgroud)

在上面的查询中,如果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
Run Code Online (Sandbox Code Playgroud)

我喜欢使用<,<=,> =或>,因为它允许更多的灵活性,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
Run Code Online (Sandbox Code Playgroud)


Pav*_*lov 5

试试这个:

SELECT
    *
FROM
    Records
WHERE
    DateCreated BETWEEN @Date1 AND @Date2
Run Code Online (Sandbox Code Playgroud)