我希望获得当前日期到较早日期之间的月份。
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 :(得分: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
希望它有所帮助。
问候。