我尝试将此日期值添加到数据库:23.07.2017 18:10:00
$MYDATE= $data[$i]->MYDATE;
//I ALSO ADD THIS LINE
$str = oci_parse($conn, "ALTER SESSION SET NLS_DATE_FORMAT = 'DD.MM.YYYY HH24:MI:SS'");
oci_execute($str);
//
$sql = 'INSERT INTO MYTABLE(ID,MYDATE)'.'VALUES(:ID,:MYDATE)';
$compiled = oci_parse($conn, $sql);
oci_bind_by_name($compiled, ':ID', $ID);
oci_bind_by_name($compiled, ':MYDATE', $MYDATE);
oci_execute($compiled);
然而它给了我错误:
ORA-01847每月的日期必须介于1个月和最后一天之间的错误。
答案 0 :(得分:0)
在php代码中更改NLS_DATE_FORMAT
后,您还可以尝试执行此行。
ALTER SESSION SET NLS_DATE_LANGUAGE = 'AMERICAN';
如果NLS_DATE_FORMAT
未设置,有时设置NLS_DATE_LANGUAGE
无效。
答案 1 :(得分:-3)
添加此触发器数据库
CREATE OR REPLACE TRIGGER USER_NAME.MY_SET_DATE after logon on database
begin
if (user = 'USER_NAME') then
execute immediate
'alter session set nls_date_format = ''YYYY-MM-DD'' ';
-- execute immediate
--'ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE' ;
end if;
end my_set_date;