```
SET compile_expressions = 1
SELECT GREATEST(2,0)
```

size_t result, size_t input_rows_count, const FunctionOverloadResolverPtr & function_builder) const
    {
        ColumnNumbers new_arguments = arguments;
        
        if (WhichDataType(block.getByPosition(arguments[1]).type).isDateOrDateTime())
            std::swap(new_arguments[0], new_arguments[1]);
        
        Block new_block = block;
        new_block.getByPosition(new_arguments[1]).type = std::make_shared<DataTypeNumber<DataTypeInterval::FieldType>>();
        ColumnsWithTypeAndName new_arguments_with_type_and_name =
                {new_block.getByPosition(new_arguments[0]), new_block.getByPosition(new_arguments[1])};
        auto function = function_builder->build(new_arguments_with_type_and_name);
        function->execute(new_block, new_arguments, result, input_rows_count);
        block.getByPosition(result).column = new_block.getByPosition(result).column;
    }
public:
    static constexpr auto name = Name::name;
    static FunctionPtr create(const Context & context) { return std::make_shared<FunctionBinaryArithmetic>(context); }