powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как в оракле взять день недели?
23 сообщений из 23, страница 1 из 1
Как в оракле взять день недели?
    #32464445
MaratIK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конструкция типа
Код: plaintext
1.
2.
3.
4.
SELECT TO_CHAR (TO_DATE ('31-MAR-2004'),
                'D',
                'NLS_DATE_LANGUAGE = RUSSIAN'
               ) day_of_week
  FROM DUAL

возвращает 4, хотя сегодня среда и должно быть 3.
to_char других нлс-параметров не берет, в сессии nls_lang не хотелось бы альтерить.
Как ораклу в пределах одного запроса рассказать, что начало недели это понедельник, а не воскресение?
"Если хочешь умереть молодым, то делай побольше глобальных переменных."
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #32464459
X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
X
Гость
Наверное неделя начинается с воскресенья
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #32464466
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
dan@sqlmast>; alter session set nls_territory = america;

Session altered.

dan@sqlmast>; select to_char (to_date ('31-mar-2004'), 'd') day_of_week from dual;

DAY_OF_WEEK
 ------------
 
 4 

dan@sqlmast>; alter session set nls_territory = cis;

Session altered.

dan@sqlmast>; select to_char (to_date ('31-mar-2004'), 'd') day_of_week from dual;

DAY_OF_WEEK
 ------------
 
 3 


Жаль только, что указание NLS_TERRITORY прямо в TO_CHAR недоступно:

Код: plaintext
1.
2.
3.
4.
5.
dan@sqlmast>; select to_char (to_date ('31-mar-2004'), 'd', 'nls_territory = cis') day_of_week from dual;
select to_char (to_date ('31-mar-2004'), 'd', 'nls_territory = cis') day_of_week from dual
       *
ERROR at line  1 :
ORA- 12702 : invalid NLS parameter string used in SQL function
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #32464470
MaratIK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ораклистые создатели подозревают, что день недели может начинаться с понедельника:
http://download-uk.oracle.com/docs/cd/A87860_01/doc/server.817/a76966/ch2.htm#94640Some cultures consider Sunday to be the first day of the week. Others consider Monday to be the first day of the week. A German calendar starts with Monday.

"Если хочешь умереть молодым, то делай побольше глобальных переменных."
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #32464478
MaratIK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин...
Denis PopovЖаль только, что указание NLS_TERRITORY прямо в TO_CHAR недоступно
"Если хочешь умереть молодым, то делай побольше глобальных переменных."
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #32464509
brainwashed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант навскидку.
Анализировать
Код: plaintext
select to_char (sysdate, 'dy') day_of_week from dual
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #32464517
brainwashed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и для пущей уверенности в результате
Код: plaintext
1.
2.
3.
4.
SELECT TO_CHAR (sysdate,
                'DY',
                'NLS_DATE_LANGUAGE = RUSSIAN'
               ) day_of_week
  FROM DUAL
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #32464519
MaratIK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
"Если хочешь умереть молодым, то делай побольше глобальных переменных."
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #32464720
VikingSan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может чем поможет.

понедельник:
Код: plaintext
SELECT TRUNC(SYSDATE,'IW') FROM dual
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #32464872
brainwashed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Логично
Код: plaintext
SELECT CEIL(SYSDATE-TRUNC(SYSDATE,'IW')) FROM DUAL
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #32465337
Фотография Алексей Черепанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select to_char(sysdate,'Day','NLS_DATE_LANGUAGE=RUSSIAN') from dual

:)

select to_char(sysdate,'Month','NLS_DATE_LANGUAGE=RUSSIAN') from dual

Алексей
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #32465368
brainwashed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смысл-то в том, чтобы цифру вернуть
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #32465574
Фотография UK0IAI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
побробуйте это - тут все выдается (календарь)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare 
P_DT_START date;
begin
:P_DT_START := to_date ('01/01/04','dd/mm/yy');
end;
/
SELECT 
  TRUNC(:P_DT_START,'MM') + ROWNUM -  1   AS DT_TIME, 
  TO_NUMBER(TO_CHAR (TRUNC(:P_DT_START,'MM') + ROWNUM -  1 , 'YYYY', 'NLS_DATE_LANGUAGE= russian')) AS god, 
  TO_NUMBER(TO_CHAR (TRUNC(:P_DT_START,'MM') + ROWNUM -  1 , 'MM', 'NLS_DATE_LANGUAGE= russian'))   AS MES, 
  TO_NUMBER(TO_CHAR (TRUNC(:P_DT_START,'MM') + ROWNUM -  1 , 'DD', 'NLS_DATE_LANGUAGE= russian'))   AS DAY, 
  TO_NUMBER(to_char( TRUNC(:P_DT_START,'MM') + ROWNUM -  1 ,'IW')) AS WEEK,
  TO_CHAR (TRUNC(:P_DT_START,'MM') + ROWNUM -  1 , 'DY', 'NLS_DATE_LANGUAGE=russian')               AS NM_DAY, 
  ROWNUM    AS NUM_DAY,
  DECODE( TO_CHAR (TRUNC(:P_DT_START,'MM') + ROWNUM -  1 , 'DY', 'NLS_DATE_LANGUAGE=russian'),'СБТ',  2 , 'ВСК', 2 , 1 ) AS TIP_DAY
  FROM all_objects 
WHERE ROWNUM <=  LAST_DAY(  TO_DATE ( '12.'|| TO_CHAR(TRUNC (:P_DT_START,'YEAR'),'RRRR'),'MM.RRRR')) - 
                 TO_DATE ( '01.01.'|| TO_CHAR (SYSDATE,'YYYY'),'DD.MM.RRRR') + 1 ;
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как в оракле взять день недели?
    #35891002
Dimon4iK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UK0IAI,
:(
У меня твой календарь работать не хочет(
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #35891543
Zloxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimon4iKУ меня твой календарь работать не хочет(
МОг бы и первого апреля дождаться, вместе пятилетие поста встретили бы
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #35891641
Dimon4iKUK0IAI,
:(
У меня твой календарь работать не хочет(
Нужен календарик? Читай тут: тынц - Календарики на любой вкус... :)
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #35891647
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimon4iKUK0IAI,
:(
У меня твой календарь работать не хочет(

Значит, денег мало платите или мотивировать календари на работу не умеете.
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #35892480
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сколько уже можно?
поиск юзайте...
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #36223661
dfhdfhj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex-ls,

SELECT last_name, hire_date, to_char (hire_date,'day') "DAY"
1.FROM employees
2.ORDER BY to_char(hire_date,'d');
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как в оракле взять день недели?
    #37353694
Eliska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alter session set nls_territory='CIS';
SELECT TO_CHAR (sysdate,'D','NLS_DATE_LANGUAGE = RUSSIAN') day_of_week FROM DUAL
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как в оракле взять день недели?
    #39457155
legg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eliskaalter session set nls_territory='CIS';
SELECT TO_CHAR (sysdate,'D','NLS_DATE_LANGUAGE = RUSSIAN') day_of_week FROM DUAL
а не проще (и лучше), чтобы не париться с нлс параметрами день недели считать просто как
mod(to_number(TO_CHAR(SYSDATE+1, 'J')),7)? я всегда так делал..
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #39457159
legg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чьорт побьери.. сам не понял как в некропост занесло.
...
Рейтинг: 0 / 0
Как в оракле взять день недели?
    #39533363
Eugen_Evgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
legg, пригодилось, спасибо!
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как в оракле взять день недели?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]