2010-06-01 39 views
10

Hiện tại tôi đang sử dụng MyTimeStampField-TRUNC(MyTimeStampField) để trích xuất phần thời gian từ cột dấu thời gian trong Oracle.Trích xuất phần thời gian từ cột TimeStamp trong ORACLE

SELECT CURRENT_TIMESTAMP-TRUNC(CURRENT_TIMESTAMP) FROM DUAL 

này trả

+00 13: 12: 07,100729

này hoạt động OK cho tôi, để trích xuất các bán thời gian từ một lĩnh vực dấu thời gian, nhưng tôi đang tự hỏi nếu có cách nào tốt hơn (có thể sử dụng hàm ORACLE tích hợp) để làm điều này?

Trả lời

7

Còn chức năng EXTRACT() thì sao?

+4

nếu sử dụng chức năng chiết xuất, nên đã viết một cái gì đó như 'chọn Extract (GIỜ TỪ CURRENT_TIMESTAMP) || ':' || EXTRACT (MINUTE FROM CURRENT_TIMESTAMP) || ':' || EXTRACT (SECOND FROM CURRENT_TIMESTAMP) TỪ DUAL; 'điều này có hiệu quả hơn so với phương pháp tôi thực sự sử dụng? – RRUZ

+0

@RRUZ có lẽ cũng thêm số 0 đầu nếu đồng hồ chỉ có 1 chữ số: SELECT LPAD (EXTRACT (HOUR TỪ CURRENT_TIMESTAMP), 2, '0') || ':' || LPAD (EXTRACT (MINUTE FROM CURRENT_TIMESTAMP), 2, '0') || ':' || LPAD (EXTRACT (SECOND TỪ CURRENT_TIMESTAMP), 2, '0') TỪ DUAL; –

6

Bạn luôn có thể làm điều gì đó như:

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

Tôi tin rằng điều này sẽ làm việc với thời gian là tốt.

0

Tôi nghĩ rằng phương pháp được đề cập ngắn hơn và nhanh hơn cả hai câu trả lời. Nguyên nhân của nó chỉ liên quan đến hai phép toán và không phân tích cú pháp, định dạng và chuyển đổi phức tạp.

2

chọn TO_DATE (TO_CHAR (SYSDATE, 'hh24: mi: ss'), 'hh24: mi: ss') từ kép. Điều này cho dấu thời gian trong 1 giờ ít hơn so với thực tế.

1

này có thể giúp:

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

Chào mừng bạn đến với SO. Có thể bạn có thể làm cho câu trả lời của mình tốt hơn bằng cách chỉ rõ cách nó tốt hơn giải pháp của câu hỏi, cũng như làm theo phần trợ giúp để định dạng đúng mã của bạn. –

2

Bạn muốn chỉ hẹn hò sau đó sử dụng

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

và nếu bạn muốn chỉ thời gian sau đó sử dụng

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

các thông số đang làm tất cả các thay đổi

'DD-MM-YYYY' 

'hh24:mi:ss' 
+0

do đó câu lệnh cuối cùng sẽ là cho câu lệnh trên SELECT to_char (cast (SYSDATE as date), 'DD-MM-YYYY'), to_char (cast (SYSDATE as date), 'hh24: mi: ss') TỪ DUAL –

Các vấn đề liên quan