Perl 为什么MySQL DATE_格式打印空白结果?

Perl 为什么MySQL DATE_格式打印空白结果?,perl,dbi,Perl,Dbi,在过去的几个小时里,我一直在尝试使用DATE\u格式格式化MySQL时间戳,但它什么都没做 Perl代码: use CGI; use DBI; my $q = new CGI; # Database connection goes here my $sth_select = $dbh->prepare( "SELECT DATE_FORMAT(timestamp, '%m/%d/%y') FROM foo" ); $sth_select->execute() || d

在过去的几个小时里,我一直在尝试使用
DATE\u格式
格式化MySQL时间戳,但它什么都没做

Perl代码:

use CGI;
use DBI;

my $q = new CGI;

# Database connection goes here

my $sth_select = $dbh->prepare(
    "SELECT DATE_FORMAT(timestamp, '%m/%d/%y') FROM foo"
);

$sth_select->execute() || die "Unable to execute query: $dbh->errstr";

if (my $ref = $sth_select->fetchrow_hashref()) {
    print $q->header;
    print " TIME: $ref->{timestamp}";
    exit;
}
结果

TIME: 
它根本不打印格式化的时间,它是空的


当我尝试打印时间戳时,它不会打印任何内容,但是如果我删除
数据\u格式
,只需执行
从foo中选择时间戳
,那么它会很好地打印时间戳,尽管没有格式化。有人能提供他们对这个问题的见解吗?

返回的散列包含数据库提供的as keys列标题。当使用这样的函数时,列标题实际上是“DATE_格式(时间戳,%m/%d/%y')”。 尝试将SQL修改为:

my $sth_select = $dbh->prepare("SELECT DATE_FORMAT(timestamp, '%m/%d/%y') AS timestamp FROM foo");

或者您可以使用
fetchrow\u array
fetchrow\u arrayref
,它们不关心列名。或者:
foreach my$key(keys%$ref){print“$key=$ref->{$key}\n”}
先生,您刚刚解决了我的问题!我尝试了'AS'参数,但没有使用'AS timestamp',而是使用'AS formatted_timestamp'。尽管如此,我还是尝试了你的建议,工作得非常出色!如果有一天我遇见你,啤酒就由我来付了!非常感谢!评论由@ysth指导,但也感谢您的洞察力!