尝试更改NLS_TERRITORY
和NLS_LANGUAGE
仍然将数据库显示为星期一作为开始一周。
Alter session set nls_territory = 'America'
select TRUNC(sysdate, 'iw') AS iso_week_start_date,
TRUNC(sysdate, 'iw') + 7 - 1/86400 AS iso_week_end_date
from dual;
2 3
ISO_WEEK ISO_WEEK
--------- ---------
20-AUG-18 26-AUG-18
此处ISO_WEEK_START_DATE应该从2018年8月19日开始,即星期天
答案 0 :(得分:5)
TRUNC(sysdate, 'iw')
根据始终为星期一的ISO-8601返回星期的第一天。对于本地周,请使用TRUNC(sysdate, 'WW')
,具体取决于当前用户会话NLS_TERRITORY