Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как в оракле взять день недели? / 23 сообщений из 23, страница 1 из 1
31.03.2004, 17:12
    #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
31.03.2004, 17:17
    #32464459
X
X
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
Наверное неделя начинается с воскресенья
...
Рейтинг: 0 / 0
31.03.2004, 17:21
    #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
31.03.2004, 17:23
    #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
31.03.2004, 17:26
    #32464478
MaratIK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
Блин...
Denis PopovЖаль только, что указание NLS_TERRITORY прямо в TO_CHAR недоступно
"Если хочешь умереть молодым, то делай побольше глобальных переменных."
...
Рейтинг: 0 / 0
31.03.2004, 17:37
    #32464509
brainwashed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
Вариант навскидку.
Анализировать
Код: plaintext
select to_char (sysdate, 'dy') day_of_week from dual
...
Рейтинг: 0 / 0
31.03.2004, 17:40
    #32464517
brainwashed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
Ну и для пущей уверенности в результате
Код: plaintext
1.
2.
3.
4.
SELECT TO_CHAR (sysdate,
                'DY',
                'NLS_DATE_LANGUAGE = RUSSIAN'
               ) day_of_week
  FROM DUAL
...
Рейтинг: 0 / 0
31.03.2004, 17:41
    #32464519
MaratIK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
Спасибо
"Если хочешь умереть молодым, то делай побольше глобальных переменных."
...
Рейтинг: 0 / 0
31.03.2004, 19:50
    #32464720
VikingSan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
может чем поможет.

понедельник:
Код: plaintext
SELECT TRUNC(SYSDATE,'IW') FROM dual
...
Рейтинг: 0 / 0
01.04.2004, 09:21
    #32464872
brainwashed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
Логично
Код: plaintext
SELECT CEIL(SYSDATE-TRUNC(SYSDATE,'IW')) FROM DUAL
...
Рейтинг: 0 / 0
01.04.2004, 12:49
    #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
01.04.2004, 12:58
    #32465368
brainwashed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
смысл-то в том, чтобы цифру вернуть
...
Рейтинг: 0 / 0
01.04.2004, 14:18
    #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
Период между сообщениями больше года.
25.03.2009, 15:02
    #35891002
Dimon4iK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
UK0IAI,
:(
У меня твой календарь работать не хочет(
...
Рейтинг: 0 / 0
25.03.2009, 17:12
    #35891543
Zloxa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
Dimon4iKУ меня твой календарь работать не хочет(
МОг бы и первого апреля дождаться, вместе пятилетие поста встретили бы
...
Рейтинг: 0 / 0
25.03.2009, 17:43
    #35891641
Как в оракле взять день недели?
Dimon4iKUK0IAI,
:(
У меня твой календарь работать не хочет(
Нужен календарик? Читай тут: тынц - Календарики на любой вкус... :)
...
Рейтинг: 0 / 0
25.03.2009, 17:44
    #35891647
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
Dimon4iKUK0IAI,
:(
У меня твой календарь работать не хочет(

Значит, денег мало платите или мотивировать календари на работу не умеете.
...
Рейтинг: 0 / 0
26.03.2009, 06:13
    #35892480
alex-ls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
сколько уже можно?
поиск юзайте...
...
Рейтинг: 0 / 0
29.09.2009, 19:16
    #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
Период между сообщениями больше года.
15.07.2011, 15:26
    #37353694
Eliska
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
alter session set nls_territory='CIS';
SELECT TO_CHAR (sysdate,'D','NLS_DATE_LANGUAGE = RUSSIAN') day_of_week FROM DUAL
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
22.05.2017, 11:01
    #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
22.05.2017, 11:02
    #39457159
legg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
чьорт побьери.. сам не понял как в некропост занесло.
...
Рейтинг: 0 / 0
09.10.2017, 13:00
    #39533363
Eugen_Evgen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в оракле взять день недели?
legg, пригодилось, спасибо!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как в оракле взять день недели? / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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