If you want to dynamically set a column name, then the SQL itself must be dynamic. So you can use a ref cursor for that
SQL> create table t ( x date, bal number );
Table created.
SQL>
SQL> insert into t values ( date '2017-05-17', 10 );
1 row created.
SQL>
SQL> variable rc refcursor
SQL>
SQL> declare
2 d date := date '2017-05-17';
3 begin
4 open :rc for 'select bal bal_'||to_char(d,'ddmm')||' from t where x = :1' using d;
5 end;
6 /
PL/SQL procedure successfully completed.
SQL>
SQL> print rc
BAL_1705
----------
10
1 row selected.
I'm not sure this is really a good idea though....