【发布时间】:2015-09-16 08:28:13
【问题描述】:
对于我的项目,我需要在星期几和 1...7 值之间建立绝对的数字对应关系。
您可能知道,日期和数字之间的关联可能因地区而异,例如在德国,星期一是 1,星期日是 7,而在美国,星期一是 2,而星期日是 1。
因此,在寻找解决方案时,我发现以下代码似乎可以在任何区域设置下工作,分配 Monday=1...Sunday=7:
1 + TRUNC (date) - TRUNC (date, 'IW')
谁能解释一下它是如何工作的?特别是我无法理解这条指令是什么:
TRUNC (date, 'IW')
确实如此。
【问题讨论】:
-
trunc(date,'IW') 返回一周的第一天,不受 nls_territory 设置的影响,请参阅docs.oracle.com/cd/B19306_01/server.102/b14200/…。只有格式字符串 DAY、DY 和 D 受到影响。
-
@FrankOckenfuss 嗯,不。 IW 返回 ISO 周的第一天(星期一),因此完全不受 nls_territory_settings 的影响。
-
@Boneist 你是对的,我的第一个答案是快:-D
标签: sql oracle oracle11g date-formatting