我在Oracle中有一個TIMESTAMP(6)字段,我需要從時間中刪除毫秒組件。從oracle tmstmp字段中刪除毫秒
比如我有
10/20/2014 10:34:06.356000 AM
,我想刪除毫秒,使我有
10/20/2014 10:34:06 AM
你知不知道這樣做的最好方法是什麼?
謝謝!
我在Oracle中有一個TIMESTAMP(6)字段,我需要從時間中刪除毫秒組件。從oracle tmstmp字段中刪除毫秒
比如我有
10/20/2014 10:34:06.356000 AM
,我想刪除毫秒,使我有
10/20/2014 10:34:06 AM
你知不知道這樣做的最好方法是什麼?
謝謝!
試試這個
SELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS') "NOW"
FROM DUAL;
如果需要12小時日期格式
SELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY HH:MI:SS AM') "NOW"
FROM DUAL;
這個怎麼樣?
select cast(col as timestamp(0))
編輯:
避免舍入最簡單的方法是使用trunc()
或減去半秒:
select cast(col - 0.5/(24*60*60) as timestamp(0))
這個工作,但它確實四捨五入。有沒有辦法讓它不圓,只是毫不費力地去除毫秒? – user3022875
這可能幫助!
select substr(to_char('10/20/2014 10:34:06.356000 AM'),1,instr(to_char('10/20/2014 10:34:06.356000 AM'),'.')-1)||' '||
substr(to_char('10/20/2014 10:34:06.356000 AM'),-2,instr(to_char('10/20/2014 10:34:06.356000 AM'),'.')-1) "Date"
from dual;
您可以將它轉換爲沒有小數秒時間戳(這將四捨五入到最接近的第二個):
CAST(your_timestamp AS TIMESTAMP(0))
或一個DATE
數據類型(這將截斷精確到秒):
CAST(your_timestamp AS DATE)
如果你想把它當作一個數據類型,然後將它轉換回:
CAST(CAST(your_timestamp AS DATE) AS TIMESTAMP(0))
或者你可以將其轉換爲一個格式化字符串,並指定要使用(這將截斷精確到秒)格式的模型:
TO_CHAR(your_timestamp, 'YYYY-MM-DD HH24:MI:SS')
像這樣:
的Oracle 11g R2架構設置:
CREATE TABLE your_table (your_timestamp) AS
SELECT TIMESTAMP '2017-10-25 12:53:12.10076' FROM DUAL;
查詢1:
SELECT CAST(your_timestamp AS TIMESTAMP(0)) AS "Timestamp",
CAST(your_timestamp AS DATE) AS "Date",
TO_CHAR(your_timestamp, 'DD-MM-YYYY HH24:MI:SS') AS "String"
FROM your_table
| Timestamp | Date | String |
|-----------------------|----------------------|---------------------|
| 2017-10-25 12:53:12.0 | 2017-10-25T12:53:12Z | 25-10-2017 12:53:12 |
記:如何TIMESTAMP
和DATE
輸出的格式將取決於您NLS_TIMESTAMP_FORMAT
和NLS_DATE_FORMAT
會話參數,但可以直接當您指定格式模型時,控制格式TO_CHAR
。
這個工程,但我需要的是一個時間戳(0)。當我運行你的代碼時,我失去了AM/PM,並且時間失去了GMT格式。它可以轉換爲時間戳(0)嗎?那麼它可能工作 – user3022875
如果你需要AM/PM 12小時格式,然後使用第二個查詢 – HaveNoDisplayName
但這仍然是一個CHAR。我需要它時間戳(0)。那可能嗎? – user3022875