pl / sql中日期之间的条件

时间:2016-05-17 19:35:10

标签: sql oracle datetime plsql

WHERE Customer.LastTranDate BETWEEN 
udf_functions.udf_oracledatetimetotdatetime(to_date('2012/01/01 00:00:00','YYYY/MM/DD HH24:MI:SS')) 
AND    
udf_functions.udf_oracledatetimetotdatetime(to_date('2016/01/01 00:00:00','YYYY/MM/DD HH24:MI:SS'))

上述条件适用于特定日期,但我想检查相同的条件,为期12个月,即今天的日期和日期12个月之前。

我尝试了以下但是没有用。

WHERE Customer.LastTranDate BETWEEN 
udf_functions.udf_oracledatetimetotdatetime(to_date(to_char(sysdate,'YYYY/MM/DD HH24:MI:SS')))
AND 
udf_functions.udf_oracledatetimetotdatetime(to_date(to_char(add_months(sysdate,-12),'YYYY/MM/DD HH24:MI:SS')))

有人可以帮忙吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

咦?为什么所有转换为字符串和从字符串返回?

WHERE Customer.LastTranDate BETWEEN
          udf_functions.udf_oracledatetimetotdatetime(add_months(sysdate, -12)) AND
          udf_functions.udf_oracledatetimetotdatetime(sysdate 

如果函数将Oracle date作为参数(如to_date()所示),则无需转换为字符串并返回日期。

我真的不明白为什么你有一个udf进行这样的转换。这只会伤害表现。

答案 1 :(得分:0)

无需在WHERE部分查询日期转换。

如果您需要特定格式的日期,请在SELECT部分执行此操作,并保留WHERE原样