簡體   English   中英

如何在oracle中獲取日期的差異

[英]how to take difference of dates in oracle

我在表中有一個 varchar2 列 open_time 。 現在我需要找出 open_time 和 sysdate 之間的差異大於 180 的記錄。

您可以使用TO_DATE函數將 varchar2 轉換為日期。 您需要指定的格式取決於存儲日期的格式。

獲得日期值后,您可以從sysdate減去它以獲得(小數)天數。 因此,要檢查您的日期是否超過 180 天,您可以這樣寫:

WHERE sysdate - ThatDateValue > 180

換句話說:

WHERE sysdate - TO_DATE(open_time, 'FORMAT') > 180

其中 FORMAT 是與您的日期匹配的格式。 我不能給出它,因為您沒有指定任何示例日期,但是如果您查看TO_DATE文檔,可能的格式參數是有詳細記錄的

但作為一個建議:在varchar2存儲日期是一個壞主意。 date 不必每次都將文本轉換為日期更有效,它可以防止存儲非法日期,並且可以更輕松地進行日期計算。 如果有機會,我會用日期列替換 varchar2 列。

如果您減去兩個日期,您會得到一個數字,即兩個日期之間的天數,因此您可以從 sysdate 中減去 open_time,然后檢查結果是否大於 180

前任。

SELECT
 --COLUMNS
FROM
 --TABLES
WHERE
 (SYSDATE - open_time) > 180

錯過了 varchar 部分,但另一個答案提到了 TO_DATE 函數,這是一個簡單的修復。 只需在 open_time 周圍拋出一個 TO_DATE

如果 open_time 以天為單位,這似乎很容易。

SELECT * FROM myTable
WHERE open_time > 180

如果是日期,請嘗試使用 datediff?

暫無
暫無

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

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