2014-09-04 29 views
0

給定一個時間戳值,即「04-SEP-14 03.09.09.272949000 PM」,我如何獲得日期時間直到秒部分並清零微秒部分?如何將時間戳刪除到幾秒?

給出:04-SEP-14 03.09.09.272949000 PM 心願:04-SEP-14提前03.09.09.00 PM

感謝。

回答

2

您可以使用the cast function它轉換爲用構建一個零毫秒的TIMESTAMP:

with t as (
    select to_timestamp('04-SEP-14 03.09.09.272949000 PM', 
    'DD-MON-RR HH:MI:SS.FF AM') as tstamp 
    from dual 
) 
select to_char(cast(tstamp as timestamp(0)), 'DD-MON-RR HH:MI:SS.FF2 AM') 
from t; 

TO_CHAR(CAST(TSTAMPASTIMESTAMP(0)),'DD-M 
---------------------------------------- 
04-SEP-14 03:09:09.00 PM 

你也可以投兩次:

cast(<your column>, timestamp(0)) 

使用CTE在你的價值傳遞,一次到DATE去除毫秒,然後再回到TIMESTAMP:

with t as (
    select to_timestamp('04-SEP-14 03.09.09.272949000 PM', 
    'DD-MON-RR HH:MI:SS.FF AM') as tstamp 
    from dual 
) 
select to_char(cast(cast(tstamp as date) as timestamp), 
    'DD-MON-RR HH:MI:SS.FF2 AM') 
from t; 

TO_CHAR(CAST(CAST(TSTAMPASDATE)ASTIMESTA 
---------------------------------------- 
04-SEP-14 03:09:09.00 PM 

...這是做更多的工作,以及更多的打字。

不能使用trunc(date)因爲隱含的TIMESTAMP轉換爲DATE,並因爲日期已經在那個精度不能傳遞SSfmt反正。