使用括号的 Interbase XE7 优先级
Interbase XE7 Precedence using Brackets
为了演示我遇到的问题,我使用了一个 table,它有一个 DATE 和一个 TIME 字段作为记录的一部分。
例如我希望从一天的07:00过滤到第二天的06:59,所以我的查询如下:
SELECT * FROM V_W1W2_LOGS WHERE (V_W1W2_LOGS.W1_DATE >= '2015-05-20' AND V_W1W2_LOGS.W1_TIME >= '07:00:00') AND (V_W1W2_LOGS.W1_DATE<='2015-05-22' AND V_W1W2_LOGS.W1_TIME < '07:00:00')
(上面不会 return 任何行。似乎表现得好像括号中的优先级没有变化)
作为测试,我做了以下操作。
如果我从 'AND' 的第二部分删除时间限制,行将被 returned,从 07:00 开始,但持续到第二天的整个时间段。
(...) WHERE (V_W1W2_LOGS.W1_DATE >= '2015-05-20' AND V_W1W2_LOGS.W1_TIME >= '07:00:00') AND (V_W1W2_LOGS.W1_DATE<='2015-05-22')
(Returns 来自 07:00 的行如预期)
查询是否有明显错误?
我尝试了更多的括号、不同的日期格式等,但没有任何区别。
它似乎表现得好像没有括号。
我在拖网中没有发现任何与此相关的问题。如果记录中有时间戳,它可能会更直接,但事实并非如此。
任何帮助表示赞赏。
谢谢
詹姆斯 F
第一个查询同时使用:
V_W1W2_LOGS.W1_TIME >= '07:00:00'
...AND
...
V_W1W2_LOGS.W1_TIME < '07:00:00'
...这是一个废话。
也许您的意思是 OR
介于两者之间?
除了fanaghirocco的回答。
您应该分别使用 timestamp
而不是 date
和 time
。
类似的东西:
SELECT * FROM table1
WHERE
cast (fdate ||' '||ftime as timestamp) >= '2015-05-01 07:00:00'
and
cast (fdate ||' '||ftime as timestamp) < '2015-05-02 07:00:00'
为了演示我遇到的问题,我使用了一个 table,它有一个 DATE 和一个 TIME 字段作为记录的一部分。 例如我希望从一天的07:00过滤到第二天的06:59,所以我的查询如下:
SELECT * FROM V_W1W2_LOGS WHERE (V_W1W2_LOGS.W1_DATE >= '2015-05-20' AND V_W1W2_LOGS.W1_TIME >= '07:00:00') AND (V_W1W2_LOGS.W1_DATE<='2015-05-22' AND V_W1W2_LOGS.W1_TIME < '07:00:00')
(上面不会 return 任何行。似乎表现得好像括号中的优先级没有变化)
作为测试,我做了以下操作。 如果我从 'AND' 的第二部分删除时间限制,行将被 returned,从 07:00 开始,但持续到第二天的整个时间段。
(...) WHERE (V_W1W2_LOGS.W1_DATE >= '2015-05-20' AND V_W1W2_LOGS.W1_TIME >= '07:00:00') AND (V_W1W2_LOGS.W1_DATE<='2015-05-22')
(Returns 来自 07:00 的行如预期)
查询是否有明显错误? 我尝试了更多的括号、不同的日期格式等,但没有任何区别。 它似乎表现得好像没有括号。
我在拖网中没有发现任何与此相关的问题。如果记录中有时间戳,它可能会更直接,但事实并非如此。 任何帮助表示赞赏。
谢谢
詹姆斯 F
第一个查询同时使用:
V_W1W2_LOGS.W1_TIME >= '07:00:00'
...AND
...
V_W1W2_LOGS.W1_TIME < '07:00:00'
...这是一个废话。
也许您的意思是 OR
介于两者之间?
除了fanaghirocco的回答。
您应该分别使用 timestamp
而不是 date
和 time
。
类似的东西:
SELECT * FROM table1
WHERE
cast (fdate ||' '||ftime as timestamp) >= '2015-05-01 07:00:00'
and
cast (fdate ||' '||ftime as timestamp) < '2015-05-02 07:00:00'