IMHO, in the environment where the process of code review is reasonably common, any code with such conversions should not pass evaluation at all! There is a number of good reasons (and here I could've typed 2-3 pages)... My favorite one is that explicit conversions open an additional hole for SQL injections. Here is a sample:
SQL> alter session set NLS_Date_Format = '"'''' or 1=1--';
2 v_dt date:=sysdate;
3 v_count_nr number;
5 v_sql_tx varchar2(4000);
7 v_sql_tx:='select count(*) from scott.emp where hiredate>'||v_dt;
10 execute immediate v_sql_tx into v_count_nr;
Query:select count(*) from scott.emp where hiredate>'' or 1=1--
PL/SQL procedure successfully completed.
You may notice a very strange date format - and that's exactly how the SQL injection happens! Concatenation of a DATE attribute (line 7) to a string under the hood fires TO_CHAR(V_DT) with the default format mask that was just overridden by ALTER SESSION. As a result, the query shows the total count of rows in the EMP table (14) when it should return 0!
Good enough reason? I would think so.