关于 BETWEEN 语法的问题
Questions on BETWEEN syntax
我正在编写一个脚本,用于检索早于或等于给定日期的帐户的最新余额。例如,如果账户的最后一次移动是在 Jan.5,而我在脚本中输入 Jan.8,则它必须取回 Jan.5 的余额。当然,如果账户在 1 月 8 日有任何变动,那么它将在 1 月 8 日取回余额。但是,每个余额在给定日期范围内有效,如 BAL_DATE
和 END_BAL_DATE
.
列所示
这个脚本有效,但我发现它很不寻常,因为值和表达式的位置被交换了:
SELECT
*
FROM
tbaadm.gstt
WHERE
gl_sub_head_code = '12403'
AND
crncy_code in ('USD','HKD')
AND
sol_id = 5001
AND
last_day('29-OCT-2015') BETWEEN BAL_DATE and END_BAL_DATE
我可以使用这个脚本吗?或者这是不好的做法?
为了回答您的问题,请注意在 SQL 中,您可以通过使用 and
条件来使用多个 where 子句。
select ....
from ....
where <condition1>
and <condition2>
...
所以正确使用了 between 查询。您可以在 where
子句中使用 between query 并在 and
中使用 rest all ,您将获得完全相同的结果。所以你的查询类似于
SELECT
*
FROM
tbaadm.gstt
WHERE
last_day('29-OCT-2015') BETWEEN BAL_DATE and END_BAL_DATE
and
gl_sub_head_code = '12403'
AND
crncy_code in ('USD','HKD')
AND
sol_id = 5001
BETWEEN Conditions
A BETWEEN condition determines whether the value of one expression is
in an interval defined by two other expressions.
基本上,您是在比较两个表达式和一个表达式。
last_day('29-OCT-2015') BETWEEN BAL_DATE and END_BAL_DATE
在您的查询中,您正在比较 expr 1 即 last_day('29-OCT-2015')
与 expr 2 BAL_DATE
和 表达式 3 END_BAL_DATE
.
整个 BETWEEN 条件 内部解释 为:
last_day('29-OCT-2015') >= BAL_DATE AND last_day('29-OCT-2015') <= END_BAL_DATE
我正在编写一个脚本,用于检索早于或等于给定日期的帐户的最新余额。例如,如果账户的最后一次移动是在 Jan.5,而我在脚本中输入 Jan.8,则它必须取回 Jan.5 的余额。当然,如果账户在 1 月 8 日有任何变动,那么它将在 1 月 8 日取回余额。但是,每个余额在给定日期范围内有效,如 BAL_DATE
和 END_BAL_DATE
.
这个脚本有效,但我发现它很不寻常,因为值和表达式的位置被交换了:
SELECT
*
FROM
tbaadm.gstt
WHERE
gl_sub_head_code = '12403'
AND
crncy_code in ('USD','HKD')
AND
sol_id = 5001
AND
last_day('29-OCT-2015') BETWEEN BAL_DATE and END_BAL_DATE
我可以使用这个脚本吗?或者这是不好的做法?
为了回答您的问题,请注意在 SQL 中,您可以通过使用 and
条件来使用多个 where 子句。
select ....
from ....
where <condition1>
and <condition2>
...
所以正确使用了 between 查询。您可以在 where
子句中使用 between query 并在 and
中使用 rest all ,您将获得完全相同的结果。所以你的查询类似于
SELECT
*
FROM
tbaadm.gstt
WHERE
last_day('29-OCT-2015') BETWEEN BAL_DATE and END_BAL_DATE
and
gl_sub_head_code = '12403'
AND
crncy_code in ('USD','HKD')
AND
sol_id = 5001
BETWEEN Conditions
A BETWEEN condition determines whether the value of one expression is in an interval defined by two other expressions.
基本上,您是在比较两个表达式和一个表达式。
last_day('29-OCT-2015') BETWEEN BAL_DATE and END_BAL_DATE
在您的查询中,您正在比较 expr 1 即 last_day('29-OCT-2015')
与 expr 2 BAL_DATE
和 表达式 3 END_BAL_DATE
.
整个 BETWEEN 条件 内部解释 为:
last_day('29-OCT-2015') >= BAL_DATE AND last_day('29-OCT-2015') <= END_BAL_DATE