我对sql中datetime数据的逻辑运算符的性质感到困惑。
在我的数据库表中,RecordDateTime保存为:
2014-04-09 15:28:32.000
我正在检索此查询:
select
*
from [GPSDB].[dbo].[Coordinates]
where IMEI= '354400055967495'
and RecordedDateTime >= '2014-04-09 15:28:32.000'
and RecordedDateTime <= '2014-04-09 15:39:20.000'
现在它返回4行,这些行落在这两个日期范围之间或者与预期相同,但是当我从第一个日期删除Seconds部分然后仍然可以工作并返回相同的结果集时,就会出现混淆,即
select
*
from [GPSDB].[dbo].[Coordinates]
where IMEI = '354400055967495'
and RecordedDateTime >= '2014-04-09 15:28'
and RecordedDateTime <= '2014-04-09 15:39:20.000'
但如果我从第二个日期删除秒部分,那么它只返回一行,并提供第一个日期的匹配时间。奇怪的 ? :/
请帮助。
答案 0 :(得分:0)
日期时间数据2014-04-09 15:28:32.000
包含两部分日期部分2014-04-09
和时间部分15:28:32.000
。
所以当你说
时 RecordedDateTime >= '2014-04-09 15:28:32.000' and RecordedDateTime <= '2014-04-09 15:39:20.000'
它也将考虑时间部分,因为它之间有11分钟的差距;它将获取所有那些落在该范围内的记录。
但是当你在下面说时,它只考虑日期部分进行比较而且只有1天,因此它将获取该日期的第一条记录2014-04-09
RecordedDateTime >= '2014-04-09'
and RecordedDateTime <= '2014-04-09'