我想获取当前日期到较早日期之间的月份。
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 也是一个日期。
你得到什么错误信息?您是否尝试在没有 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
希望能帮助到你。
问候。