如何將時間戳轉換爲日期?在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'
但查詢沒有返回任何值。
請幫我找到日期的最大時間戳。
如何將時間戳轉換爲日期?在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'
但查詢沒有返回任何值。
請幫我找到日期的最大時間戳。
嘗試使用TRUNC
和TO_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')
我試過使用這個,但由於時間戳包含AM/PM與毫秒,它不返回任何值。 – Dinu
使用這種格式,而選擇
to_char(systimestamp,'DD-MON-YYYY')
例如:
從dual中選擇to_char(systimestamp,'DD-MON-YYYY');
這可能不是正確的做法。但我已經使用子字符串函數解決了這個問題。
Select max(start_ts), min(start_ts)from db where SUBSTR(start_ts, 0,9) ='13-may-2016'
使用此我能夠檢索最大和最小時間戳。
如果數據類型是時間戳,那麼可見格式是不相關的。
您應該避免將數據轉換爲日期或使用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')
CAST(timestamp_expression AS DATE)
例如,查詢是:SELECT CAST(SYSTIMESTAMP AS DATE) FROM dual;
見的許多其他問題,一個關於日期比較時間戳,如這一個:http://stackoverflow.com/questions/30519823/compare-date-in-sql-command – Turophile
_real_ timestamp列沒有「格式」。你爲什麼把它存儲爲一個字符串? –