簡體   English   中英

在 Oracle SQL 中將時間戳轉換為日期

[英]Convert timestamp to date in Oracle SQL

我們如何將時間戳轉換為日期?

該表有一個字段start_ts ,它是timestamp格式:

'05/13/2016 4:58:11.123456 PM'

我需要查詢表並找到表中的最大和最小timestamp ,但我不能。

Select max(start_ts) 
from db 
where cast(start_ts as date) = '13-may-2016'

但是查詢沒有返回任何值。

請幫助我找到日期的最大時間戳。

CAST(timestamp_expression AS DATE)

例如,查詢是: SELECT CAST(SYSTIMESTAMP AS DATE) FROM dual;

嘗試改用TRUNCTO_DATE

WHERE
    TRUNC(start_ts) = TO_DATE('2016-05-13', 'YYYY-MM-DD')

或者,您可以使用>=<來避免在start_ts列中使用函數:

WHERE
   start_ts >= TO_DATE('2016-05-13', 'YYYY-MM-DD')
   AND start_ts < TO_DATE('2016-05-14', 'YYYY-MM-DD')

選擇時像這樣格式化:

to_char(systimestamp, 'DD-MON-YYYY')

例如:

select to_char(systimestamp, 'DD-MON-YYYY') from dual;

如果數據類型是時間戳,則可見格式無關緊要。

您應該避免將數據轉換為日期或使用 to_char。 而是使用 TO_TIMESTAMP() 將時間戳數據與時間戳值進行比較

WHERE start_ts >= TO_TIMESTAMP('2016-05-13', 'YYYY-MM-DD')
   AND start_ts < TO_TIMESTAMP('2016-05-14', 'YYYY-MM-DD')

你可以試試簡單的

select to_date('2020-07-08T15:30:42Z','yyyy-mm-dd"T"hh24:mi:ss"Z"') from dual;

您可以使用:

select to_date(to_char(date_field,'dd/mm/yyyy')) from table

我會選擇以下內容:

Select max(start_ts) 
from db 
where trunc(start_ts) =  date'13-may-2016'

如果日期字符串中有毫秒,則可以使用以下內容。

select TO_TIMESTAMP(SUBSTR('2020-09-10T09:37:28.378-07:00',1,23), 'YYYY-MM-DD"T"HH24:MI:SS:FF3')From Dual;

然后將其轉換為 Date :

select trunc(TO_TIMESTAMP(SUBSTR('2020-09-10T09:37:28.378-07:00',1,23), 'YYYY-MM-DD"T"HH24:MI:SS:FF3')) From Dual;

它對我有用,希望它也能幫助你。

這可能不是正確的方法。 但是我已經使用 substring 函數解決了這個問題。

Select max(start_ts), min(start_ts)from db where SUBSTR(start_ts, 0,9) ='13-may-2016'

使用這個我能夠檢索最大和最小時間戳。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM