powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / преобразование строки к дате
25 сообщений из 25, страница 1 из 1
преобразование строки к дате
    #39268993
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть запрос вида:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with qq as(select '30.12.2015' from dual
union
select '30-12-2015' from dual
union
select '30.Feb.2015' from dual
union
select '21/мар/2015' from dual
union
select '12.30.15' from dual
union
select '256.2015' from dual)


нужно преобразовать к дате, делаю вот так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with qq as(
select to_date('21.12.2015', 'dd.mm.yyyy') q from dual
union all
select to_date(translate('21-12-2015','#-', '.'),'dd.mm.yyyy' )q from dual
union all
select to_date(replace(regexp_replace('21.Feb.2015','(Feb){1,}', '02'), '.'), 'DDMMYYYY')d
from dual
union all
select to_date(replace(regexp_replace('21/мар/2015','(мар){1,}', '03'), '/'), 'DDMMYYYY') d
from dual
union all
select to_date('12.21.15', 'mm.dd.yy') q from dual
union all
select to_date('256.2015', 'ddd.yyyy') q from dual
)
select * from qq


как можно преобразовать обращаясь к дате обращаясь к самой таблице qq из первого запроса?
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269008
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто на ком стоял?
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269009
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нужно из первого запроса получить дату
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269013
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы это делаете во втором запросе.

Еще раз - кто на ком стоял?
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269021
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_che,

(как понял) вы хотите подбирать формат для to_date из значения преобразуемой строки?
если так, то например case и флаг в руки
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269023
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orawish,
да, но только не совсем понимаю как это сделать, в оракле новичок и поэтому сюда написал
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269028
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,

да, во втором я сделал внутри первого запроса, а вопрос именно в том, как сделать так же, в селекте обращаясь к таблице qq
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269032
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто дает такие задачи как "нарисовать черновик искусственного интеллекта", препод?
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269048
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_cheorawish,
да, но только не совсем понимаю как это сделать, в оракле новичок и поэтому сюда написал

примерно так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
with qq as(select '30.12.2015' st from dual
     union select '31-12-15' from dual
)
select st
      ,case when regexp_substr (st,'^\d\d\.\d\d\.\d\d\d\d$') is not null then to_date (st,'dd.mm.yyyy') 
            when regexp_substr (st,'^\d\d\-\d\d\-\d\d$')     is not null then to_date (st,'dd-mm-rr') 
            end dt
  from qq;



разумеется, надо расширить (и угл у бить )
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269050
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,лето же, если вопрос не по теме, то просьба не писать
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269064
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orawish,
с Jan не меняется:(
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269066
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_che, у вас явно проблемы с русским языком или с мышлением (что неотделимо). Вас трудно понять.

Тему задаете вы. Мы тут не против что-то посоветовать, при четкой постановке задачи.

При нечеткой возникают вопросы: кто ставит такую задачу, кто ее неверно интерпретирует.

Коллега включил хрустальный шар и написал вам код. Помогло вам - значит, хрустальный шар сработал.
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269070
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_che,

Mon
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269074
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishразумеется, надо расширить (и угл у битьпример неудачный. С одной стороны, оба значения покрываются одной маской. С другой - из трех пар цифр не всегда можно понять, что из них кто.
wiiild_cheесли вопрос не по теме, то просьба не писатьписать просьбу сам к себе, чтобы не писать... это нечто.
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269077
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,
ок, удачи
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269078
ДержиДрук
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
with qq as(select '30.12.2015' dat from dual
           union
           select '30-12-2015' from dual
           union
           select '28.Feb.2015' from dual
           union
           select '21/ìàð/2015' from dual
           union
           select '12.30.15' from dual
           union
           select '256.2015' from dual)
SELECT dat, TO_DATE(dat, CASE WHEN REGEXP_INSTR(dat, '\d{2}\D\d{2}\D\d{4}')>0 THEN
                            'dd.mm.yyyy' 
                         ELSE    
                            CASE WHEN REGEXP_INSTR(UPPER(dat), '\d{2}\W[A-Z]{3}\W\d{4}')>0 THEN
                               'dd.mon.yyyy'                             
                            ELSE   
                               CASE WHEN REGEXP_INSTR(UPPER(dat), '\d{2}\W[À-ß]{3}\W\d{4}')>0 THEN
                                  'dd.mon.yyyy'
                               ELSE   
                                  CASE WHEN REGEXP_INSTR(dat, '\d{2}\W\d{2}\W\d{2}')>0 THEN
                                     'mm.dd.yy'
                                  ELSE   
                                     CASE WHEN REGEXP_INSTR(UPPER(dat), '\d{3}\W\d{4}')>0 THEN
                                        'ddd.yyyy' 
                                     END 
                                  END 
                               END                                                    
                            END                         
                         END, 
                         'NLS_DATE_LANGUAGE=' || CASE WHEN REGEXP_INSTR(UPPER(dat), '\d{2}\W[À-ß]{3}\W\d{4}')>0 THEN
                                                    'RUSSIAN'
                                                 ELSE
                                                    'AMERICAN'   
                                                 END) FROM qq
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269080
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orawish,
значение пустое выдается
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269081
Косяки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
with qq as(select '30.12.2015' dat from dual
           union
           select '30-12-2015' from dual
           union
           select '28.Feb.2015' from dual
           union
           select '21/мар/2015' from dual
           union
           select '12.30.15' from dual
           union
           select '256.2015' from dual)
SELECT dat, TO_DATE(dat, CASE WHEN REGEXP_INSTR(dat, '\d{2}\D\d{2}\D\d{4}')>0 THEN
                            'dd.mm.yyyy' 
                         ELSE    
                            CASE WHEN REGEXP_INSTR(UPPER(dat), '\d{2}\W[A-Z]{3}\W\d{4}')>0 THEN
                               'dd.mon.yyyy'                             
                            ELSE   
                               CASE WHEN REGEXP_INSTR(UPPER(dat), '\d{2}\W[А-Я]{3}\W\d{4}')>0 THEN
                                  'dd.mon.yyyy'
                               ELSE   
                                  CASE WHEN REGEXP_INSTR(dat, '\d{2}\W\d{2}\W\d{2}')>0 THEN
                                     'mm.dd.yy'
                                  ELSE   
                                     CASE WHEN REGEXP_INSTR(UPPER(dat), '\d{3}\W\d{4}')>0 THEN
                                        'ddd.yyyy' 
                                     END 
                                  END 
                               END                                                    
                            END                         
                         END, 
                         'NLS_DATE_LANGUAGE=' || CASE WHEN REGEXP_INSTR(UPPER(dat), '\d{2}\W[А-Я]{3}\W\d{4}')>0 THEN
                                                    'RUSSIAN'
                                                 ELSE
                                                    'AMERICAN'   
                                                 END) FROM qq
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269084
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269087
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, тему можно закрывать уже
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269088
ДержиДрук
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wiiild_cheВсем спасибо, тему можно закрывать уже
Наивный )
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269090
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДержиДрук, вы очень помогли, спасибо :)
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39269783
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_cheДержиДрук, вы очень помогли, спасибо :)12.11.15 - это 12 ноябрь или 11 декабрь?
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39270051
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxwiiild_cheДержиДрук, вы очень помогли, спасибо :)12.11.15 - это 12 ноябрь или 11 декабрь?

Это 15 ноября 12ого года .

SY.
...
Рейтинг: 0 / 0
преобразование строки к дате
    #39270080
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_che,

надо бороться не с системой в поисках лайфхака-костыля, а с кривыми данными (очевидно, приходящими извне).
(лечить не симптомы, а причину)
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / преобразование строки к дате
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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