SYSDATEをSYSDATE()で置き換えるのはNG
結論から言うと「OracleのSYSDATEをMySQLに移行する場合はNOW()使え」ということらしい。
http://nippondanji.blogspot.com/2009/04/sysdatenow.html
以下検証ソース。
SQL> CONN / AS SYSDBA SQL> GRANT EXECUTE ON DBMS_LOCK TO SCOTT ; // 権限あげないとdbms_lock.sleepが使えないので SQL> ALTER SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'; SQL> CREATE OR REPLACE FUNCTION tesf(dt IN NUMBER) RETURN NUMBER IS d NUMBER; BEGIN dbms_lock.sleep(dt); RETURN d; END; / SQL> SELECT SYSDATE, testf(10), SYSDATE from dual(); SYSDATE TESF(10) SYSDATE ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 2011-10-18 18:09:57 2011-10-18 18:09:57
SYSDATE()だと挙動がちがくなっちゃうらしい。もーめんどくさいなー