trunc(date, 'IW') 到底是做什么的?
What exactly does trunc(date, 'IW')?
对于我的项目,我需要在星期几和 1...7 值之间建立绝对数字对应关系。
您可能知道,日期和数字之间的关联会因区域设置而异,例如在德国,星期一是 1,星期日是 7,而在美国,星期一是 2,星期日是 1。
因此,在寻找解决方案时,我发现以下代码似乎与语言环境无关,分配星期一=1...星期日=7:
1 + TRUNC (date) - TRUNC (date, 'IW')
谁能解释一下它是如何工作的?特别是我无法理解这条指令是什么:
TRUNC (date, 'IW')
确实如此。
ISO 周的最基本概念是使其 NLS 领土独立。
Week of year (1-52 or 1-53) based on the ISO standard.
一周从星期一开始,在星期日结束。
TRUNC(DATE,'IW')
returns 一周的第一天。对我来说 TRUNC(SYSDATE,'IW)
returns 星期一。今天是 2 月 21 日,星期二。从 TRUNC(SYSDATE,'IW')
中减去,即 20 日星期一,您将得到 1
(因为 21-20=1
)。将 1
添加到您在等式开头所做的那样,您将得到 2
,我们将其与星期二相关联。
对于我的项目,我需要在星期几和 1...7 值之间建立绝对数字对应关系。
您可能知道,日期和数字之间的关联会因区域设置而异,例如在德国,星期一是 1,星期日是 7,而在美国,星期一是 2,星期日是 1。
因此,在寻找解决方案时,我发现以下代码似乎与语言环境无关,分配星期一=1...星期日=7:
1 + TRUNC (date) - TRUNC (date, 'IW')
谁能解释一下它是如何工作的?特别是我无法理解这条指令是什么:
TRUNC (date, 'IW')
确实如此。
ISO 周的最基本概念是使其 NLS 领土独立。
Week of year (1-52 or 1-53) based on the ISO standard.
一周从星期一开始,在星期日结束。
TRUNC(DATE,'IW')
returns 一周的第一天。对我来说 TRUNC(SYSDATE,'IW)
returns 星期一。今天是 2 月 21 日,星期二。从 TRUNC(SYSDATE,'IW')
中减去,即 20 日星期一,您将得到 1
(因为 21-20=1
)。将 1
添加到您在等式开头所做的那样,您将得到 2
,我们将其与星期二相关联。