2013-10-30 51 views
0

我试图选择在星期一,星期三,星期三的0:00到1:00之间发生的记录。此请求的dow部分正在工作,但“小时”部分似乎未包含在查询中。我做错了什么?我觉得我缺少一些括号在时间段内选择一周中的特定日期

SELECT * FROM myTable 
WHERE date_part('dow',date)=0 
    OR date_part('dow',date)=1 
    OR date_part('dow',date)=3 
    AND date_part('hour',date)<=1 
    AND date_part('hour',date)>= 0 
+1

所以把一些我会与周围的OR条件括号开始,因为他们都一起工作。 –

+0

'OR'条件需要在括号内,因为'AND'具有更高的优先级。 –

+1

对,你不希望最后的OR和第一个AND先执行。试试吧,伙计。 –

回答

1

试试这个:

SELECT * 
FROM myTable 
WHERE (date_part('dow',date) In(0,1,3)) AND (date_part('hour',date)<=1 AND date_part('hour',date)>= 0) 
+0

IN()非常优雅。我会补充你可以进一步简化。 '和date_part(小时,日期)BETWEEN 0 AND 1';请注意,BETWEEN .. AND与BOOL AND BOOL不同。 –

相关问题