我有一张表格,其时间戳列如下
ID timeStamp var1 var2 var3
1 05-09-2013 18:23:56 0 1 1
2 05-09-2013 18:23:57 0 0 1
3 05-09-2013 18:23:58 1 0 1
4 05-09-2013 18:23:59 1 0 1
我想根据时间戳检查,如时间戳> 05-09-2013 18:23:56和时间戳< 05-09-2013 18:23:59
我正在尝试这些方式
select * from test where timeStamp<'05-09-2013 18:23:59' and timeStamp>'05-09-2013 18:23:57'
它提供了空行。我尝试使用between
关键字仍未获得所需的结果。
SELECT * FROM test
WHERE (timeStamp BETWEEN '05-09-2013 18:23:57' AND '05-09-2013 18:23:59')
我可以知道我在这里做错了什么吗? 这是屏幕截图
此屏幕截图没有 where 子句
此屏幕截图显示表格描述
答案 0 :(得分:1)
使用不会破坏查询的适当日期时间文字。 Bad habits to kick : mis-handling date / range queries
的更多详细解释SELECT *
FROM test
WHERE ( timeStamp BETWEEN '2013-09-05T18:23:57' AND '2013-09-05T18:23:59' ) ;
另请注意,时间部分高于18:23:59.000
的时间戳(如'18:23:59.100'
)将不会包含在结果中,因为上述条件相当于:
WHERE timeStamp >= '2013-09-05T18:23:57.000'
AND timeStamp <= '2013-09-05T18:23:59.000'
所以,你可能想要这个:
SELECT *
FROM test
WHERE timeStamp >= '2013-09-05T18:23:57.000'
AND timeStamp < '2013-09-05T18:24:00.000'
出于这个原因,不建议在日期和日期时间比较中使用BETWEEN
。请参阅@Aaron Bertrand撰写的另一篇博文: What do BETWEEN and the devil have in common?