首先非常感谢这个精彩网站上的所有PERL专家;我学到了很多。
我有一个小的“翻译”问题;
我的.pl脚本按顺序执行这些任务:
Table有8列,其中一个是事件的存储日期和时间,我在sql中声明的格式是:
DATETIME_EVENT VARCHAR2(255 BYTE) DEFAULT NULL NOT NULL
你可以清楚地看到我的位置......
所以上面的第3点执行这个块:
my $sth = $dbh->prepare('INSERT INTO myTable(TIME_ISSUE,col2,col3,col4,col5,col6,col7,col8) VALUES (?, ?, ?, ?, ?, ?, ?, ?)');
示例插入IS:2014-09-19 00:03:58,562
一切都很顺利,但我稍后会执行一系列查询;但我必须在SQL中使用to_date函数进行翻译,以将TIME_ISSUE列解释为datetime TYPE。
AS:
select to_date(SUBSTR(TIME_ISSUE,0,19) ,'YYYY-MM-DD HH24:MI:SS' ) from myTable;
输出:19/09/2014 23:59:56
如果我将table.column创建为datetime类型,我如何编写上面的perl插入块以便将txt插入到datetime类型中?
我试过但根本不工作:
my $sth = $dbh->prepare('INSERT INTO REQUEST (TO_DATE(SUBSTR(DATETIME_EVENT ,0,19), 'YYYY-MM-DD HH24:MI:SS'),LOG_LEVEL,LOGONID, CLIENTID, USERID,IPADDRESS,DURATION,CLASSMETHOD) VALUES (?, ?, ?, ?, ?, ?, ?, ?)')
P.S。
你可以假设,如果我运行上面的perl,我之前已经创建了这个列:
TIME_ISSUE DATE DEFAULT NOT NULL
答案 0 :(得分:2)
您还可以更改会话的日期格式。例如,在Perl DBI中,这很有用,其中to_date()函数不可用:
ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
您也可以永久设置默认的nls_date_format:
ALTER SYSTEM SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
在Perl DBI中,您可以使用do()方法运行这些命令:
$db->do("ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS');
http://www.dba-oracle.com/t_dbi_interface1.htm https://community.oracle.com/thread/682596?start=15&tstart=0
答案 1 :(得分:1)