对于我的项目,我需要在星期几和1 … 7值之间具有绝对的数值对应关系。
您可能已经知道,天数与数字之间的关联会因地区而异,例如在德国,星期一是1,星期日是7,而在美国,星期一是2,而星期日是1。
因此,在寻找解决方案时,我发现以下代码似乎不管区域设置如何都有效,将Monday = 1 … Sunday = 7分配为:
1 + TRUNC (date) - TRUNC (date, 'IW')
有人可以向我解释一下它是如何工作的吗?特别是我只是不明白这条指令是什么:
TRUNC (date, 'IW')
确实如此。
TRUNC(DATE,'IW')返回一周的第一天。对我来说,TRUNC(SYSDATE,'IW)星期一回来。今天是2月21日,星期二。减去TRUNC(SYSDATE,'IW')20日1(星期一),您会得到(因为21-20=1)。1像在方程式的开始那样进行添加,您将获得2,我们将其与星期二关联。
TRUNC(DATE,'IW')
TRUNC(SYSDATE,'IW)
TRUNC(SYSDATE,'IW')
1
21-20=1
2