2016-04-08 20 views
-1

Başlık, ben bu ben 19:33:25, dizeye dönüştürülür temelde bir tarihi almak için kullanılan sorguOracle SQL: Nasıl HH24: MI: SS "Saat: #, Dakika #, Saniye #" olarak nasıl görüntülenir?

Hours: 19, Minutes: 33, Seconds: 25 

olarak

19:33:25 

görüntülemek istediğiniz her şey söylüyor.

TO_CHAR(TO_DATE(24 * 60 * 60 * (a.dateEnd - SYSDATE),'sssss'),'hh24:mi:ss') 

Böyle bir şey mümkün mü?

Herhangi bir girdi için teşekkürler!

+0

Başlangıç ​​verilerinin türü nedir? bir değişken, bir sütun, bazı manipülasyonların sonucu mı? Şimdiye kadar ne denediniz? – Aleksej

+0

TO_CHAR (TO_DATE (24 * 60 * 60 * (a.dateEnd - SYSDATE), 'sssss'), 'hh24: mi: ss') ... Temel olarak dizeye dönüştürülen bir tarih. – SJ19

cevap

0

bir dize değeriyle başlamak zorunda olduğunu varsayarsak, bazı normal ifadeler ile deneyebilirsiniz:

with test(txt) as (select '19:33:25' from dual) 
select regexp_replace(txt, '([0-9]{2,2}):([0-9]{2,2}):([0-9]{2,2})', 'Hours:\1, Minutes: \2, Seconds: \3') 
from test 

Bu başlangıç ​​dizesinde numaraları eşleşir ve bazı sabit metin içeren yeni bir dize oluşturmak için bunları kullanır ('Saatler', ...) ve eşleşen dizeleri

+0

Teşekkürler, ancak sorgumla çalışmayı denedim ama hatalarla karşılaşıyorum: http://pastebin.com/zbtpWX6X – SJ19

+0

Sorun, başlangıç ​​sorgunuzda görünüyor, regexp bölümünde değil – Aleksej

+0

Bu benim başlangıç ​​sorgusu ve iyi çalışıyor https://i.gyazo.com/9f093d3adf89822e4a06bd226a8dc0ee.png – SJ19

0

sen tek alanları öZÜ edebilirsiniz: sen, ca metin ile tek bir sütunda onu istersen

SELECT 
    EXTRACT(HOUR FROM (a.dateEnd - SYSDATE)) AS HOUR, 
    EXTRACT(MINUTE FROM (a.dateEnd - SYSDATE)) AS MINUTE, 
    EXTRACT(SECOND FROM (a.dateEnd - SYSDATE)) AS SECOND 
FROM a 
WHERE ... 

SELECT CONCAT('Hours: ' || EXTRACT(HOUR FROM (a.dateEnd - SYSDATE)) || 
       ' Minutes: ' EXTRACT(MINUTE FROM (a.dateEnd - SYSDATE)) || 
       ' Seconds: ' EXTRACT(SECOND FROM (a.dateEnd - SYSDATE)) 
      ) AS time_string 
FROM a 
WHERE ... 
3

Sen EXTRACT(... from DATE) işlevini kullanabilirsiniz, ancak sabit bir dize çıkış gerek beri, sen TO_CHAR kullanarak aynı yapabilirsiniz: n CONCAT kullanın. Dize biçimindeki tüm sabit kısımlar bize bir şey veren çift tırnak içine alınabilir -

select TO_CHAR(sysdate, '"Hours: "hh", Minutes: "mi" Seconds: "ss') from dual; 
İlgili konular