sysdate到较早日期之间的月份

时间:2013-07-16 13:20:21

标签: oracle oracle11g

我希望获得当前日期到较早日期之间的月份。

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

但它不起作用。我不知道这是否正确。

2 个答案:

答案 0 :(得分:1)

sysdate已经是一个日期,不需要使用to_date()转换为一个日期。我怀疑fld_valid_from也是一个日期。

答案 1 :(得分: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

希望它有所帮助。

问候。