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

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

4

2 回答 2

1

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

于 2013-07-16T13:22:22.393 回答
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

希望能帮助到你。

问候。

于 2013-07-16T15:47:10.213 回答