Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Написать запрос, выводящий заданную дату в формате "05 июня 2000 года". / 16 сообщений из 16, страница 1 из 1
06.02.2018, 10:55
    #39597259
Gomn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
я написал код:
SELECT TO_CHAR(SYSDATE, 'dd') || ' ' || SUBSTR(TO_CHAR(SYSDATE, 'month'), 0,
LENGTH(TO_CHAR(SYSDATE, 'month'))-2) || 'я' || ' ' || TO_CHAR(SYSDATE, 'yyyy') || 'года' FROM DUAL;
но как с такими: марта и августа? как переделать код?
...
Рейтинг: 0 / 0
06.02.2018, 11:01
    #39597265
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
Gomnно как с такими: марта и августа? как переделать код?Не играть в чехарду с приведением месяца к строковому представлению и последующим обрезанием, а жестко и прозрачно захардкодить 12 вариантов.
...
Рейтинг: 0 / 0
06.02.2018, 11:15
    #39597272
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
Код: plsql
1.
2.
3.
4.
5.
SQL> select regexp_substr('января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря', '\w+', 1, 4) from dual;

REGEXP
------
апреля
...
Рейтинг: 0 / 0
06.02.2018, 21:33
    #39597787
Gomn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
Elic
Код: plsql
1.
SQL> select regexp_substr('января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря', '\w+', 1, 4) from dual;


здесь надо вручную все время месяц менять, а как чтоб он автоматически вывел?
...
Рейтинг: 0 / 0
06.02.2018, 21:34
    #39597788
Gomn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
и как получить число и год?
...
Рейтинг: 0 / 0
06.02.2018, 22:40
    #39597805
кагтотаг
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with dic(lang, mnames) as (select 'RU','января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря' 
from dual union all select 'UA','сiчня|лютеня|березня|квiтня|травня|червня|липня|серпня|вересня|жовтня|листопада|грудня' 
from dual union all select 'BY','студзеня|лютага|сакавіка|красавіка|мая|чэрвеня|ліпеня|жніўня|верасьня|кастрычніка|лістапада|сьнежня'
from dual
)
,t as (select add_months(trunc(sysdate,'RR'), rownum-1)+rownum-1 dt from dual connect by level <=12
)
select dt
, replace(to_char(dt,'dd "$MMM$" yyyy hh24:mi:ss')
         , '$MMM$', regexp_substr((select mnames from dic where lang='UA'), '\w+', 1, extract(month from dt))) dt_ua
, replace(to_char(dt,'dd "$MMM$" yyyy hh24:mi:ss')
         , '$MMM$', regexp_substr((select mnames from dic where lang='RU'), '\w+', 1, extract(month from dt))) dt_ru
, replace(to_char(dt,'dd "$MMM$" yyyy hh24:mi:ss')
         , '$MMM$', regexp_substr((select mnames from dic where lang='BY'), '\w+', 1, extract(month from dt))) dt_by
from t
;
...
Рейтинг: 0 / 0
06.02.2018, 23:01
    #39597812
Gomn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
кагтотаг, спасибо большое
...
Рейтинг: 0 / 0
06.02.2018, 23:20
    #39597820
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
AmKadНе играть в чехарду

Ну в данном случае (пробел после месяца) можно и баловаться:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT  REPLACE(
                REPLACE(
                        REPLACE(
                                TO_CHAR(SYSDATE,'dd fmmonth yyyy'),
                                'ь ', -- 'январь|февраль|апрель|июнь|июль|сентябрь|октябрь|ноябрь|декабрь'
                                'я '  -- 'января|февраля|апреля|июня|июля|сентября|октября|ноября|декабря'
                               ),
                        'й ', -- май
                        'я '  -- мая
                       ),
                'т ', -- март|август
                'та ' -- марта|августа
               ) DT
  FROM  DUAL
/



Или более эффективно:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT  REPLACE(
                TRANSLATE(
                          TO_CHAR(SYSDATE,'dd fmmonth yyyy'),
                          'ьй', -- 'январь|февраль|апрель|май|июнь|июль|сентябрь|октябрь|ноябрь|декабрь'
                          'яя'  -- 'января|февраля|апреля|мая|июня|июля|сентября|октября|ноября|декабря'
                         ),
                'т ', -- март|август
                'та ' -- марта|августа
               ) DT
  FROM  DUAL
/



SY.
...
Рейтинг: 0 / 0
06.02.2018, 23:29
    #39597822
Gomn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
SY,Выручили, вы профессионал в своем деле), а что вы сделали?
...
Рейтинг: 0 / 0
07.02.2018, 09:19
    #39597919
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
SY
07 february 2018 ((((
...
Рейтинг: 0 / 0
07.02.2018, 09:31
    #39597926
__vvp_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
Не работаетSY
07 february 2018 ((((

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT  REPLACE(
                TRANSLATE(
                          TO_CHAR(SYSDATE,'dd fmmonth yyyy', 'nls_date_language = ''RUSSIAN'''),
                          'ьй', -- 'январь|февраль|апрель|май|июнь|июль|сентябрь|октябрь|ноябрь|декабрь'
                          'яя'  -- 'января|февраля|апреля|мая|июня|июля|сентября|октября|ноября|декабря'
                         ),
                'т ', -- март|август
                'та ' -- марта|августа
               ) DT
  FROM  DUAL
...
Рейтинг: 0 / 0
07.02.2018, 09:35
    #39597929
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
Не работает07 february 2018В английском не склоняют 07 februaryя.
...
Рейтинг: 0 / 0
07.02.2018, 09:35
    #39597930
trace.log
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
Не работаетSY
07 february 2018 ((((

сделай:
Код: sql
1.
alter session set nls_date_format="dd.mm.rrrr" NLS_LANGUAGE= 'RUSSIAN' NLS_TERRITORY= 'RUSSIA';


и заработает!
...
Рейтинг: 0 / 0
07.02.2018, 10:03
    #39597952
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
кагтотаг
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with dic(lang, mnames) as (select 'RU','января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря' 
from dual union all select 'UA','сiчня|лютеня|березня|квiтня|травня|червня|липня|серпня|вересня|жовтня|листопада|грудня' 
from dual union all select 'BY','студзеня|лютага|сакавіка|красавіка|мая|чэрвеня|ліпеня|жніўня|верасьня|кастрычніка|лістапада|сьнежня'
from dual
)
,t as (select add_months(trunc(sysdate,'RR'), rownum-1)+rownum-1 dt from dual connect by level <=12
)
select dt
, replace(to_char(dt,'dd "$MMM$" yyyy hh24:mi:ss')
         , '$MMM$', regexp_substr((select mnames from dic where lang='UA'), '\w+', 1, extract(month from dt))) dt_ua
, replace(to_char(dt,'dd "$MMM$" yyyy hh24:mi:ss')
         , '$MMM$', regexp_substr((select mnames from dic where lang='RU'), '\w+', 1, extract(month from dt))) dt_ru
, replace(to_char(dt,'dd "$MMM$" yyyy hh24:mi:ss')
         , '$MMM$', regexp_substr((select mnames from dic where lang='BY'), '\w+', 1, extract(month from dt))) dt_by
from t
;



лютеня

.....
stax
...
Рейтинг: 0 / 0
07.02.2018, 12:37
    #39598106
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
Staxлютеня
Мовой не владею - поправьте, если что.
Склонения месяцев по-белорусски нашел на белорусской википедии, по-украински - искал по новостным сайтам - уж не обессудьте.
...
Рейтинг: 0 / 0
07.02.2018, 12:48
    #39598118
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать запрос, выводящий заданную дату в формате "05 июня 2000 года".
не-полиглот-ни-разуМовой не владею
По мотивам 9293016 : "07 February 2017" -> "07 лютого 2017 р"
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Написать запрос, выводящий заданную дату в формате "05 июня 2000 года". / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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