當前我正在使用MyTimeStampField-TRUNC(MyTimeStampField)
從Oracle的時間戳列中提取時間部分。從ORACLE的TimeStamp列中提取時間部分
SELECT CURRENT_TIMESTAMP-TRUNC(CURRENT_TIMESTAMP) FROM DUAL
這將返回
+00 13:12:07.100729
這對我的作品OK,提取時間部分來自時間戳字段,但我想知道如果有更好的方法(可能使用ORACLE的內置函數)來做到這一點?
當前我正在使用MyTimeStampField-TRUNC(MyTimeStampField)
從Oracle的時間戳列中提取時間部分。從ORACLE的TimeStamp列中提取時間部分
SELECT CURRENT_TIMESTAMP-TRUNC(CURRENT_TIMESTAMP) FROM DUAL
這將返回
+00 13:12:07.100729
這對我的作品OK,提取時間部分來自時間戳字段,但我想知道如果有更好的方法(可能使用ORACLE的內置函數)來做到這一點?
EXTRACT()功能如何?
你總是可以這樣做:
select TO_DATE(TO_CHAR(SYSDATE,'hh24:mi:ss'),'hh24:mi:ss') from dual
我相信,這將帶有時間戳正常工作。
我認爲有問題的方法比兩個答案都更短更快。因爲它只涉及兩個數學運算,沒有複雜的解析,格式化和轉換。
從雙重選擇TO_DATE(TO_CHAR(SYSDATE,'hh24:mi:ss'),'hh24:mi:ss')。這給出了比實際少1小時的時間戳。
這可能會幫助:
Select EXTRACT(HOUR FROM (SYSDATE - trunc(sysdate)) DAY TO SECOND) From dual;
select hour(CURRENT_TIMESTAMP)
歡迎來到SO。也許你可以通過指定問題的解決方案如何更好,以及在幫助部分中正確設置代碼格式來更好地回答問題。 – 2014-07-11 18:58:36
你只想要日期,那麼使用
to_char(cast(SYSDATE as date),'DD-MM-YYYY')
,如果你想只是時間再使用
to_char(cast(SYSDATE as date),'hh24:mi:ss')
參數正在全部改爲
'DD-MM-YYYY'
和
'hh24:mi:ss'
所以最後的語句應該是針對上述語句SELECT to_char(作爲日期轉換(SYSDATE作爲日期),'DD-MM-YYYY'),to_char(作爲日期轉換(SYSDATE),'hh24:mi:ss')FROM DUAL – 2015-01-27 21:09:06
如果使用提取功能,應該寫的東西像'SELECT EXTRACT(一小時內,CURRENT_TIMESTAMP)|| ':'|| EXTRACT(MINUTE FROM CURRENT_TIMESTAMP)|| ':'|| EXTRACT(CURRENT_TIMESTAMP的第二個)FROM DUAL;'這對於我實際使用的方法更有效率? – RRUZ 2010-06-01 17:32:49
@RRUZ如果timepart只有一個數字,也許還會加上前導零:SELECT LPAD(EXTRACT(HOUR FROM CURRENT_TIMESTAMP),2,'0')|| ':'|| LPAD(EXTRACT(MINUTE FROM CURRENT_TIMESTAMP),2,'0')|| ':'|| LPAD(EXTRACT(從CURRENT_TIMESTAMP第二位),2,'0')FROM DUAL; – 2016-05-25 12:22:26