2013-07-16 81 views
0

我想獲取當前日期到早期日期之間的月份。系統日期到更早日期之間的月份

SELECT MONTHS_BETWEEN(to_date(fld_valid_from,'yyyy-mm-dd hh24:mi:ss'),TO_DATE(sysdate, 'yyyy-mm-dd hh24:mi:ss')) num_months 
FROM tbl_customer 

但它不工作。我不知道這是否正確。

+0

哪種數據類型是'fld_valid_from',以及它不工作?你是否收到錯誤信息或錯誤的結果? –

回答

1

sysdate已經是一個日期,並且不需要使用to_date()將其轉換爲一個日期。我懷疑fld_valid_from也是一個日期。

+0

k對不起。你能顯示一些月份代碼差異代碼 – Milton

+0

不明白 - docs here http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions102.htm –

+0

'select sysdate,months_between(sysdate, date'2013-01-01')from dual;' '16-JUL-13 6.5140961' –

0

你得到了什麼錯誤信息?你有沒有嘗試比較兩個變量沒有TO_DATE命令?

SELECT MONTHS_BETWEEN (trunc(fld_valid_from),trunc(sysdate)) 
FROM tbl_customer 

如果您的列fld_valid_from是日期類型,這將工作。你在比較一個日期和另一個日期。您可以使用TO_DATE將字符串數據類型轉換爲日期數據類型。

隨着TRUNC功能,您可以從日期刪除時間戳,並且只得到......嗯,日期:

SELECT SYSDATE, TRUNC(SYSDATE) FROM DUAL; 

SYSDATE     TRUNC(SYSDATE) 
--------------------------------------- 
16/07/2013 10:45:53  16/07/2013 

希望它能幫助。

問候。

相關問題