if(firstChildDataType.isCoercibleTo(PDataType.DATE)) {
return CeilDateExpression.create(children);
} else if (firstChildDataType == PDataType.TIMESTAMP || firstChildDataType == PDataType.UNSIGNED_TIMESTAMP) {
return CeilTimestampExpression.create(children);
} else if(firstChildDataType.isCoercibleTo(PDataType.DECIMAL)) {
return new CeilDecimalExpression(children);
} else {
throw TypeMismatchException.newException(firstChildDataType, "1");
}
}