请问有没有人可以解释一下下面的代码在plsql中的含义?
date BETWEEN TRUNC(SYSDATE-6, 'iw') AND TRUNC(SYSDATE-6, 'iw')+6
z31licg01#
一种选择是实际选择这些值并查看它们表示的内容。设置环境,了解 * 什么是什么 *:
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss'; Session altered.
现在是:
SQL> select sysdate from dual; SYSDATE ------------------- 05.04.2023 21:34:57
该时期的第一部分:从“现在”(即30.03.2023)中减去6天,并将其截断为 * 一年中的 * 周 * 的第一天(iw模型),基于ISO标准:
iw
SQL> select TRUNC(SYSDATE-6, 'iw') from dual; TRUNC(SYSDATE-6,'IW ------------------- 27.03.2023 00:00:00 --> Monday
该时期的第二部分:和之前一样(所以你得到27.03.2023),然后加上6天:
SQL> select TRUNC(SYSDATE-6, 'iw')+6 from dual; TRUNC(SYSDATE-6,'IW ------------------- 02.04.2023 00:00:00 --> Sunday SQL>
lskq00tm2#
该查询使用BETWEEN运算符在date字段上包含一个条件,该条件指定该字段的值范围。该范围由两个表达式定义,并由AND运算符分隔。第一个表达式是TRUNC(SYSDATE-6, 'iw'),它使用TRUNC函数将六天前的日期值向下舍入到ISO周的最近开始。这意味着它返回六天前的星期一的日期。第二个表达式是TRUNC(SYSDATE-6, 'iw')+6,它将第一个表达式加上六天,结果是同一周的星期日。综上所述,BETWEEN条件指定date字段必须在过去六天的星期一和同一周的星期日的范围内。总而言之,这段psql代码选择了date字段福尔斯特定日期范围内的数据,即从今天算起六天前的星期,从星期一到星期日。
BETWEEN
date
AND
TRUNC(SYSDATE-6, 'iw')
TRUNC
TRUNC(SYSDATE-6, 'iw')+6
2条答案
按热度按时间z31licg01#
一种选择是实际选择这些值并查看它们表示的内容。
设置环境,了解 * 什么是什么 *:
现在是:
该时期的第一部分:从“现在”(即30.03.2023)中减去6天,并将其截断为 * 一年中的 * 周 * 的第一天(
iw
模型),基于ISO标准:该时期的第二部分:和之前一样(所以你得到27.03.2023),然后加上6天:
lskq00tm2#
该查询使用
BETWEEN
运算符在date
字段上包含一个条件,该条件指定该字段的值范围。该范围由两个表达式定义,并由AND
运算符分隔。第一个表达式是
TRUNC(SYSDATE-6, 'iw')
,它使用TRUNC
函数将六天前的日期值向下舍入到ISO周的最近开始。这意味着它返回六天前的星期一的日期。第二个表达式是
TRUNC(SYSDATE-6, 'iw')+6
,它将第一个表达式加上六天,结果是同一周的星期日。综上所述,
BETWEEN
条件指定date
字段必须在过去六天的星期一和同一周的星期日的范围内。总而言之,这段psql代码选择了
date
字段福尔斯特定日期范围内的数据,即从今天算起六天前的星期,从星期一到星期日。