Вы можете попробовать использовать функцию to_char с аргументами Day
и D
для переменной даты, как показано ниже:
SQL> var day_nr number;
SQL> exec :day_nr := 1;
PL/SQL procedure successfully completed
day_nr
---------
1
SQL> alter session set NLS_TERRITORY="UNITED KINGDOM";
SQL> with t(day,day_nr) as
2 (
3 select to_char(level + sysdate,'Day','NLS_DATE_LANGUAGE=ENGLISH'),
4 to_char(level + sysdate,'D')
5 from dual
6 connect by level <= 7
7 )
8 select day
9 from t
10 where day_nr = :day_nr;
DAY
---------
Monday
Например, если вы замените 1
на :day_nr
вы получаете Monday
и т. Д.
Rextester Demo
PS благодаря @Matthew McPeakЯ понимаю, что возвращаемое значение для to_char(<date>,'D')
может отличаться от TERRITORY, например, оно отличается от того, установлен ли параметр NLS_TERRITORY
"UNITED KINGDOM" или "AMERICAN_AMERICA".