sql-server-2008 – 在SQL Server 2008中的日期和时间之间进行搜索

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

例如,在日期:30/02/2007之间,时间:10:32和日期:21/06/2008,时间:14:19

这是最简单的查询是什么?

提前致谢.

解决方法

您应该查看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是datetime列,则字符串将被转换为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,@StartDate),0),@EndDate=DATEADD(day,@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

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03