选择开始日期和结束日期之间的日期行

时间:2012-09-15 20:36:12

标签: sql database postgresql

我在postgresql表中有一个timestampz列,我希望检索位于特定时间范围内的条目

我尝试使用

SELECT * FROM table where date BETWEEN '2012-01-01' AND '2012-01-05'

但是上面的查询无法检索到指定日期内的某些行,所以我尝试了类似这样的

SELECT * FROM table WHERE date BETWEEN '2012-01-01 00:00:00' AND '2012-01-05 23:59:59'

这很好用,但有没有更好的方法来激活它?

2 个答案:

答案 0 :(得分:5)

您可以尝试:

SELECT * 
FROM table 
where date::DATE BETWEEN '2012-01-01'::DATE AND '2012-01-05'::DATE

SQL Fiddle

答案 1 :(得分:5)

我认为不是更好但更干净。

select *
from table
where 
    date >= '2012-01-01' 
    and 
    date < '2012-01-05'::date + 1

它将涵盖'2012-01-05 23:59:59.999999'