我想獲取當前日期到早期日期之間的月份。系統日期到更早日期之間的月份
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
但它不工作。我不知道這是否正確。
我想獲取當前日期到早期日期之間的月份。系統日期到更早日期之間的月份
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
但它不工作。我不知道這是否正確。
sysdate已經是一個日期,並且不需要使用to_date()將其轉換爲一個日期。我懷疑fld_valid_from也是一個日期。
k對不起。你能顯示一些月份代碼差異代碼 – Milton
不明白 - docs here http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions102.htm –
'select sysdate,months_between(sysdate, date'2013-01-01')from dual;' '16-JUL-13 6.5140961' –
你得到了什麼錯誤信息?你有沒有嘗試比較兩個變量沒有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
希望它能幫助。
問候。
哪種數據類型是'fld_valid_from',以及它不工作?你是否收到錯誤信息或錯誤的結果? –