2015-04-21 76 views
0

我正在創建一個自定義審計日誌作爲我開發的Apex應用程序中的一個流程。Apex審計日誌 - 插入查詢

以下是我用來在用戶使用應用程序時記錄用戶操作的代碼。 LOGON_DT和LOGOFF_DT只需要採用日期格式。但是,QUERY_SEARCH_TIME需要時間。

INSERT INTO AUDIT_LOG 
(USERNAME, ORDER_NO, ORDER_NAME, CUSTOMER_NAME, LOGON_DT, LOGOFF_DT, QUERY_SEARCH_TIME) 
VALUES 
(:APP_USER, :P10_ORDER_NO, :P10_ORDER_NAME, :P10_CUSTOMER_NAME, SYSDATE, SYSDATE, 
SYSDATE(HH24:MI:SS)); 

上面的代碼完美地工作時HH24:MI:SS被拿掉了,我不知道在哪裏,我這個問題呢?

任何指導都會很棒。謝謝!

+1

您只想獲得'SYSDATE'的時間分量? 「QUERY_SEARCH_TIME」列的數據類型是什麼? – Tom

+0

是的我只想要'SYSDATE'的時間分量。 「QUERY_SEARCH_TIME」的數據類型爲「DATE DEFAULT SYSDATE」。 – tinlin28

回答

0

Oracle擁有它自己的DATE數據類型的內部表示。您不能以您嘗試的方式來指定其格式。

通常在檢索時應用日期格式,您可以在轉換爲字符串時應用適當的格式掩碼來執行此操作。

TO_CHAR(QUERY_SEARCH_TIME, 'HH24:MI:SS') 
+0

Thanks @Drumbeg! – tinlin28

0

A DATE列已經捕獲了一個時間分量。可能不需要切斷它。如果你這樣做,你不需要一個DATE列,因爲這樣的列將始終捕獲一個完整的日期,如果你只需要時間,那麼它會是什麼。 要顯示某個日期的時間分量,您必須對其應用格式掩碼: TO_CHAR(SYSDATE, 'HH24:MI:SS')。如果您想捕獲那個時間,那麼將列的數據類型更改爲適用於您所應用的格式掩碼的足夠長度的VARCHAR2類型。

閱讀上的日期時間數據類型在這裏:Oracle documentation on datetime types
的日期時間格式機型在此處閱讀起來:Oracle documentation on format models

+0

謝謝@Tom,這非常有幫助。 – tinlin28

0

如果您需要日期僅對輸出的部分時間,你可以用湯姆的答案,但如果你真的需要僅用於存儲時間部分,您可以將其計算爲

sysdate - trunc(sysdate)