Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / преобразование строки к дате / 25 сообщений из 25, страница 1 из 1
06.07.2016, 15:32:35
    #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
06.07.2016, 15:43:02
    #39269008
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
Кто на ком стоял?
...
Рейтинг: 0 / 0
06.07.2016, 15:44:22
    #39269009
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
нужно из первого запроса получить дату
...
Рейтинг: 0 / 0
06.07.2016, 15:45:30
    #39269013
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
Вы это делаете во втором запросе.

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

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

да, во втором я сделал внутри первого запроса, а вопрос именно в том, как сделать так же, в селекте обращаясь к таблице qq
...
Рейтинг: 0 / 0
06.07.2016, 15:53:56
    #39269032
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
Кто дает такие задачи как "нарисовать черновик искусственного интеллекта", препод?
...
Рейтинг: 0 / 0
06.07.2016, 16:02:13
    #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
06.07.2016, 16:02:31
    #39269050
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
dmdmdm,лето же, если вопрос не по теме, то просьба не писать
...
Рейтинг: 0 / 0
06.07.2016, 16:14:04
    #39269064
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
orawish,
с Jan не меняется:(
...
Рейтинг: 0 / 0
06.07.2016, 16:14:10
    #39269066
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
wiiild_che, у вас явно проблемы с русским языком или с мышлением (что неотделимо). Вас трудно понять.

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

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

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

Mon
...
Рейтинг: 0 / 0
06.07.2016, 16:18:59
    #39269074
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
orawishразумеется, надо расширить (и угл у битьпример неудачный. С одной стороны, оба значения покрываются одной маской. С другой - из трех пар цифр не всегда можно понять, что из них кто.
wiiild_cheесли вопрос не по теме, то просьба не писатьписать просьбу сам к себе, чтобы не писать... это нечто.
...
Рейтинг: 0 / 0
06.07.2016, 16:20:36
    #39269077
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
dmdmdm,
ок, удачи
...
Рейтинг: 0 / 0
06.07.2016, 16:20:49
    #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
06.07.2016, 16:21:07
    #39269080
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
orawish,
значение пустое выдается
...
Рейтинг: 0 / 0
06.07.2016, 16:22:10
    #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
06.07.2016, 16:24:19
    #39269084
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
Получилось
...
Рейтинг: 0 / 0
06.07.2016, 16:24:53
    #39269087
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
Всем спасибо, тему можно закрывать уже
...
Рейтинг: 0 / 0
06.07.2016, 16:26:28
    #39269088
ДержиДрук
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
wiiild_cheВсем спасибо, тему можно закрывать уже
Наивный )
...
Рейтинг: 0 / 0
06.07.2016, 16:29:01
    #39269090
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
ДержиДрук, вы очень помогли, спасибо :)
...
Рейтинг: 0 / 0
07.07.2016, 14:09:23
    #39269783
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
wiiild_cheДержиДрук, вы очень помогли, спасибо :)12.11.15 - это 12 ноябрь или 11 декабрь?
...
Рейтинг: 0 / 0
07.07.2016, 17:14:34
    #39270051
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование строки к дате
andreymxwiiild_cheДержиДрук, вы очень помогли, спасибо :)12.11.15 - это 12 ноябрь или 11 декабрь?

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

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

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


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