加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

使用Between之间的SQL查询日期搜索

发布时间:2020-12-12 06:46:31 所属栏目:MsSql教程 来源:网络整理
导读:我刚刚运行此查询 Select * from ProjectData where logtime between '2012-09-25 12:00:00.000' and '2012-09-25 12:59:59.999' order by LogTime 为了找到12小时的所有记录,我们每秒都有记录,所以我期待3600记录,但令我惊讶的是我得到了3601记录,最后的记录
我刚刚运行此查询
Select * 
from ProjectData 
where logtime between '2012-09-25 12:00:00.000' and '2012-09-25 12:59:59.999' 
order by LogTime

为了找到12小时的所有记录,我们每秒都有记录,所以我期待3600记录,但令我惊讶的是我得到了3601记录,最后的记录时间是

2012-09-25 13:00:00.000

知道为什么选择此记录?即使Between包含给定值,该值也高于条件.我正在使用SQL Server 2012 Express版.

解决方法

尝试将DATETIME2数据类型用于logtime列 –

查询:

DECLARE @temp TABLE (logtime DATETIME2)
INSERT INTO @temp (logtime)
VALUES 
    ('20120925 12:00:00.000'),('20120925 12:59:59.999'),('20120925 13:00:00.000')

SELECT *
FROM @temp
WHERE logtime BETWEEN '2012-09-25 12:00:00.000' AND '2012-09-25 12:59:59.999'
ORDER BY logtime

输出:

logtime
---------------------------
2012-09-25 12:00:00.0000000
2012-09-25 12:59:59.9990000

DATETIME与DATETIME2:

SELECT name,[precision]
FROM sys.types
WHERE name IN ('datetime','datetime2')

输出:

name        precision
----------- ---------
datetime2   27
datetime    23

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读