如何使用Perl的DBI将日期值从Oracle转换为Excel?

如何使用Perl的DBI将日期值从Oracle转换为Excel?,perl,oracle,excel,dbi,warnings,Perl,Oracle,Excel,Dbi,Warnings,我在一个非常简单的Perl过程中遇到了问题。我基本上是在查询Oracle数据库,我想将其加载到Excel中。我已经能够使用DBIx::Dump了,它可以正常工作。但是,我需要能够使用各种Excel格式工具。我认为这是输出到Excel的最好的模块,可以让我进行更多的格式化 下面是我得到的代码和错误。我基本上是查询Oracle,获取数据,加载到数组中,然后尝试写入Excel。出于某种原因,它正在进行某种比较,它不喜欢数据类型。例如,日期为“2008年10月25日”。高级副总裁为“S01”。似乎在说它

我在一个非常简单的Perl过程中遇到了问题。我基本上是在查询Oracle数据库,我想将其加载到Excel中。我已经能够使用DBIx::Dump了,它可以正常工作。但是,我需要能够使用各种Excel格式工具。我认为这是输出到Excel的最好的模块,可以让我进行更多的格式化

下面是我得到的代码和错误。我基本上是查询Oracle,获取数据,加载到数组中,然后尝试写入Excel。出于某种原因,它正在进行某种比较,它不喜欢数据类型。例如,日期为“2008年10月25日”。高级副总裁为“S01”。似乎在说它们不是数字

错误:

Argument "01-NOV-08" isn't numeric in numeric ge <>=> at C:/Perl/site/lib/Spreadsheet/WriteExcel/Worksheet.pm line 3414.
Argument "01-NOV-08" isn't numeric in pack ge <>=> ge <>=> at C:/Perl/site/lib/Spreadsheet/WriteExcel/Worksheet.pm line 2157.

我猜它是以字符串的形式出现的,当您尝试将它插入到date列中时,它没有隐式转换

尝试像这样选择日期,它将把它变成一个字符,您可以使用它进行比较

to_char(date, 'YYYY/MM/DD HH24:MI:SS')
然后

将其转换回插入时的日期。这通常是SQL中需要执行的操作


我记得,perl有一个用于DBI的跟踪功能,可以更好地了解正在发生的事情。

我猜它是以字符串形式出现的,当您尝试将它插入日期列时,它没有隐式转换

尝试像这样选择日期,它将把它变成一个字符,您可以使用它进行比较

to_char(date, 'YYYY/MM/DD HH24:MI:SS')
然后

将其转换回插入时的日期。这通常是SQL中需要执行的操作

我记得,perl有一个用于DBI的跟踪功能,可以更好地了解正在发生的事情。

问题在于:

foreach my $stmt (@data) 
{ 
    $worksheet->write($row++, @data); # !!
    last; 
} 
写入的正确语法为:

缺少$column参数,在本例中可能是0

如果$stmt是数组引用,则可以按如下方式一次性写入它:

$worksheet->write($row++, 0, $stmt); 
问题在于:

foreach my $stmt (@data) 
{ 
    $worksheet->write($row++, @data); # !!
    last; 
} 
写入的正确语法为:

缺少$column参数,在本例中可能是0

如果$stmt是数组引用,则可以按如下方式一次性写入它:

$worksheet->write($row++, 0, $stmt); 

它可能会在将来帮助您制作尽可能小的程序来说明问题。它可以准确地告诉你是什么导致了这个问题,并让人们更容易地帮助你:它可能会在将来帮助你制作出尽可能小的程序来说明这个问题。它准确地向你展示了问题的起因,并使人们更容易帮助你:在仔细阅读了这个问题之后,我完全错过了正确的上下文,这让我一直感到惊讶。做得好的jmcnamaraIt总是让我惊讶,在仔细阅读了这个问题之后,我完全错过了正确的上下文。干得好,jmcnamara