我刚刚运行此查询
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 版本。
最佳答案
尝试对 logtime
列使用 DATETIME2
数据类型 -
查询:
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
关于SQL 查询使用 Between 进行日期搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18095097/