package jef.database.query.function;
import java.util.List;
import jef.database.jsqlparser.expression.Function;
import jef.database.jsqlparser.visitor.Expression;
import jef.database.query.SqlExpression;
/**
* 在Oracle上模拟 year day minute second等函数
* @author jiyi
*
*/
public class EmuOracleExtract extends BaseArgumentSqlFunction{
private String name;
private Expression fieldName;
private boolean needTimestamp;
public EmuOracleExtract(String name,boolean needTimestamp){
this.name=name;
this.fieldName=new SqlExpression(name);
this.needTimestamp=needTimestamp;
}
public String getName() {
return name;
}
public Expression renderExpression(List<Expression> arguments) {
Expression ex=arguments.get(0);
if(needTimestamp){
ex=EmuOracleCastTimestamp.getInstance().convert(ex);
}
Function function=new Function("extract",fieldName,ex);
function.getParameters().setBetween(" from ");
return function;
}
}