回答
由於DATE
的精度是第二個(也沒有秒的小數部分),所以完全不需要TRUNC
。
數據類型TIMESTAMP
允許秒的小數部分。如果您將其轉換爲DATE
,則會移除小數秒 - 例如,
select cast(systimestamp as date)
from dual;
要截斷timestamp
到秒就可以將它轉換爲一個日期:
CAST(timestamp AS DATE)
要那麼執行本文中的TRUNC
的:
TRUNC(CAST(timestamp AS DATE), 'YEAR')
在截斷Oracle日期的一般主題,以下是可以在date trunc()和round()fu中使用的格式模型的文檔鏈接nctions
http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions242.htm#sthref2718
「秒」未列出,因爲數據類型DATE的粒度是秒。
東西的順序:
select to_char(current_timestamp, 'SS') from dual;
我用這樣的功能:
FUNCTION trunc_sec(p_ts IN timestamp)
IS
p_res timestamp;
BEGIN
RETURN TO_TIMESTAMP(TO_CHAR(p_ts, 'YYYYMMDDHH24MI'), 'YYYYMMDDHH24MI');
END trunc_sec;
我很抱歉,但我所有的前輩似乎是錯誤的:
SELECT CAST( systimestamp as date)from dual不會截斷,但可以輪到下一秒。
我用一個函數:
CREATE OR REPLACE FUNCTION TRUNC_TS(TS IN TIMESTAMP) RETURN DATE AS
BEGIN
RETURN TS;
END;
SELECT systimestamp, trunc_ts(systimestamp) date_trunc,
CAST(systimestamp AS DATE) date_cast FROM dual
SYSTIMESTAMP DATE_TRUNC DATE_CAST
21.01.10 15:03:34,567350 +01:00 21.01.2010 15:03:34 21.01.2010 15:03:35
我運行了你的代碼,但是不能重現你的發現。在幾十個測試中(其中大部分會受到四捨五入的影響),三個結果之間的秒數永遠不會有差異。你在什麼版本的Oracle? (我在11.2)。 – 2010-11-24 16:07:50
TRUNC工作只能分,投迄今爲止to_char(START_TIME,'YYYYMMDDHH24MISS')
或者乾脆select to_char(current_timestamp, 'YYYYMMDDHH24MISS') from dual;
https://www.techonthenet.com/oracle/functions/trunc_date.php
- 1. 在T-SQL中將日期時間截斷爲秒(刪除毫秒)
- 2. DropDown - 在Oracle SQL或ASP.NET中截斷日期時間?
- 3. Oracle PLSQL將日期時間截斷爲15分鐘塊
- 4. Oracle 10g爲什麼要to_char(日期時間)截斷字符串?
- 5. 在SQL中截斷秒和毫秒
- 6. 用TRUNC和TO_DATE截斷oracle中的java格式化日期()
- 7. 按日期排序,並截斷在角
- 8. 在oracle中獲取日期差值(以毫秒爲單位)
- 9. 日期字段被截斷到12:00:00小時加入Oracle
- 10. SQL自動截斷期間日期
- 11. 如何在oracle中將oracle日期(dd.mm.yyyy)轉換爲SAS日期(yymmdd6。)?
- 12. 在事務中截斷Oracle臨時表,截斷* ALL *臨時表
- 13. 如何在PostgreSQL中使用date_trunc截斷至100毫秒?
- 14. 將毫秒轉換爲日期和日期爲毫秒
- 15. 如何將日期時間轉換爲日期,截斷時間,將日期留給我?
- 16. 截斷日期時間NHibernate的QueryOver SelectGroup
- 17. MySQL-截斷日期,時間查詢
- 18. 截斷日期財政年度
- 19. SQL數據截斷:錯誤日期值
- 20. MySQL的 - 截斷日期/時間,相互
- 21. 截斷日期只小時/分鐘
- 22. 截斷日期上週一或蟒蛇
- 23. 截斷Mysql日期警告數據
- 24. 將UTC日期秒轉換爲日期
- 25. 如何在oracle中查詢日期?
- 26. 日期如何存儲在Oracle中?
- 27. 如何在Oracle中插入BC日期?
- 28. 如何在Oracle中轉換日期?
- 29. 如何在oracle中傳遞日期值?
- 30. Oracle日期 - 如何年加入日期
我認爲這是要走的路,因爲與大多數這些答案不同,它獨立於Oracle的版本。但這並不完全正確 - 你錯過了秒數。應該是這樣的: to_date(to_char(systimestamp,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS') – delany 2013-08-02 14:49:40