format daty wyciąganej z xml (Oracle)

0

Witam
Wyciągam datę z xml np:

select extractValue(xml, 'ROWSET/ROW/Date')
from application
where id = 13543;

Dostaję wynik:
2010-06-04T2200Z

Zastanawiam się czy jest szansa jakoś użyć np. To_char by uzyskać format "yyyy/mm/dd" i np. bez godziny.
Szukałem na internecie, próbowałem różnie to przerobić ale bez skutku...

Z góry dziękuje za pomoc.

0
Argath napisał(a):

Witam
Wyciągam datę z xml np:

select extractValue(xml, 'ROWSET/ROW/Date')
from application
where id = 13543;

Dostaję wynik:
2010-06-04T2200Z

Zastanawiam się czy jest szansa jakoś użyć np. To_char by uzyskać format "yyyy/mm/dd" i np. bez godziny.
Szukałem na internecie, próbowałem różnie to przerobić ale bez skutku...

Z góry dziękuje za pomoc.

Wartość dostajesz z XMLa, więc co stoi na przeszkodzie skorzystać z funkcji substr i translate? Oczywiście musisz wiedzieć w jakim formacie data jest zapisywana w XMLu.

select substr('2010-06-04T22:00:00Z',1,10) data1, translate(substr('2010-06-04T22:00:00Z',1,10),'-','/')  data2 from dual;
0

Wartość dostajesz z XMLa, więc co stoi na przeszkodzie skorzystać z funkcji substr i translate? Oczywiście musisz wiedzieć w jakim formacie data jest zapisywana w XMLu.

select substr('2010-06-04T22:00:00Z',1,10) data1, translate(substr('2010-06-04T22:00:00Z',1,10),'-','/')  data2 from dual;

Dziękuje za odpowiedź oczywiście jest pomocna ale nie do końca o to mi chodziło.
Może źle sformułowałem pytanie więc spróbuje jeszcze raz.

Teraz jak chcę samą datę z pola xml to stosuje CAST
Zastanawiam się czy mogę zastosować To_char dla pola xml, żeby np. data miała format yyyy/mm/dd?

na przykładzie:
cast((extractvalue(xml, '/ROWSET/ROW/Date')) as varchar(20))

0

W XMLu masz tekst i tyle.

Jak ten tekst interpretować? Można jako datę, ale wtedy musisz powiedzieć Oraclowi zamień mi ciąg znaków na datę, która jest w formacie określonym przeze mnie:
a) TO_DATE('2017-08-12','YYYY-MM-DD')
b) TO_DATE('20170812','YYYYMMDD')
...
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions183.htm

  1. Jak masz już datę, to możesz ją zamienić na ciąg znaków wg swojego uznania, używając dostępnych formatowań:
    TO_CHAR(sysdate,'YYYY-MM-DD')
    TO_CHAR(sysdate,'YYYY/MM/DD')

https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions180.htm

1 użytkowników online, w tym zalogowanych: 0, gości: 1