2010-06-01 13 views
10

Obecnie używam MyTimeStampField-TRUNC(MyTimeStampField), aby wyodrębnić część czasu z kolumny sygnatury czasowej w Oracle.Wyodrębnij część czasu z kolumny TimeStamp w ORACLE

SELECT CURRENT_TIMESTAMP-TRUNC(CURRENT_TIMESTAMP) FROM DUAL 

zwraca Ten

+00 13: 12: 07,100729

Działa to dla mnie OK, aby wyodrębnić część czasu z pola datownika, ale zastanawiam się, czy istnieje lepszy sposób (może być za pomocą wbudowanej funkcji ORACLE), aby to zrobić?

Odpowiedz

7

Co z funkcją EXTRACT()?

+4

jeśli użyć funkcji extract, należy napisał coś takiego 'SELECT EXTRACT (godzina z CURRENT_TIMESTAMP) || ":" || EKSTRAKT (MINUTE OD CURRENT_TIMESTAMP) || ": '|| EXTRACT (SECOND FUR CURRENT_TIMESTAMP) OD DUAL;' jest to bardziej efektywne, z której metody faktycznie korzystam? – RRUZ

+0

@RRUZ może również dodać wiodące zera, jeśli timepart ma tylko jedną cyfrę: WYBIERZ LPAD (EKSTRAKT (HOUR FROM CURRENT_TIMESTAMP), 2, '0') || ":" || LPAD (EKSTRAKT (MINUTE OD CURRENT_TIMESTAMP), 2, '0') || ":" || LPAD (EXTRACT (SECOND FUR CURRENT_TIMESTAMP), 2, '0') FROM DUAL; –

6

Zawsze można zrobić coś takiego:

select TO_DATE(TO_CHAR(SYSDATE,'hh24:mi:ss'),'hh24:mi:ss') from dual 

Wierzę, że to będzie działać ze znaczników czasu, jak również.

0

Myślę, że ta metoda jest krótsza i szybsza niż w obu odpowiedziach. Ponieważ wymaga to tylko dwóch operacji matematycznych i nie ma złożonego parsowania, formatowania i konwersji.

2

wybierz opcję TO_DATE (TO_CHAR (SYSDATE, 'hh24: mi: ss'), 'hh24: mi: ss') z dual. To daje znacznik czasu przez 1 godzinę mniej niż rzeczywisty.

1

To może pomóc:

Select EXTRACT(HOUR FROM (SYSDATE - trunc(sysdate)) DAY TO SECOND) From dual; 
-2
select hour(CURRENT_TIMESTAMP) 
+2

Witamy w SO. Być może możesz poprawić swoją odpowiedź, określając, w jaki sposób jest ona lepsza od rozwiązania pytania, a także po sekcji pomocy, aby poprawnie sformatować kod. –

2

Chcesz tylko data następnie użyć

to_char(cast(SYSDATE as date),'DD-MM-YYYY') 

a jeśli chcesz tylko raz a następnie użyć

to_char(cast(SYSDATE as date),'hh24:mi:ss') 

parametry robią wszystkie zmienione

'DD-MM-YYYY' 

i

'hh24:mi:ss' 
+0

, więc ostateczna instrukcja będzie dla powyższej instrukcji SELECT to_char (cast (SYSDATE jako date), 'DD-MM-YYYY'), to_char (cast (SYSDATE jako date), 'hh24: mi: ss') FROM DUAL –

Powiązane problemy