为什么MySQL DATE_FORMAT打印出空白结果?

JCB*_*JCB 2 perl dbi

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

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;
}
Run Code Online (Sandbox Code Playgroud)

结果

TIME: 
Run Code Online (Sandbox Code Playgroud)

它根本不打印格式化的时间,它是空白的!

当我尝试打印时间戳时,它不会打印任何内容,但如果我要删除DATA_FORMAT并只是简单地执行一次SELECT timestamp FROM foo,那么它会打印时间戳就好了,尽管没有格式化.有人可以提供他们对这件事的见解吗?

yst*_*sth 7

返回的哈希具有数据库提供的键列标题.当使用这样的函数时,列标题实际上是"DATE_FORMAT(timestamp,'%m /%d /%y')".尝试修改您的SQL:

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