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

标签 perl dbi

在过去的几个小时里,我一直在尝试使用 DATE_FORMAT 格式化 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: 

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

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

最佳答案

返回的散列具有数据库提供的作为键的列标题。当使用这样的函数时,列标题实际上是“DATE_FORMAT(timestamp, '%m/%d/%y')”。 尝试将您的 SQL 修改为:

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

关于perl - 为什么 MySQL DATE_FORMAT 打印出空白结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3664918/

相关文章:

perl - Perl 中的 CRLF 与 Unicode 翻译

perl - Getopt::Long::Descriptive - 选项规范错误:

java - 如何查明我正在使用 Perl 的 Java 版本?

perl - 如何在每个月的第一个工作日运行脚本?

perl - 如何在 "in (...)"子句中使用占位符?

sql - DBI:bind_param 将字符串转换为 ntext -> nvarchar(max) 和 ntext 不兼容

perl - 使用 .htaccess 为 CGI 脚本添加 Perl 模块的目录以包含路径

mysql - 如何从 SQL 查询中获取多列并将它们存储在 perl 的二维数组中

mysql - 使用执行的语句将结果插入到另一个表中(Perl DBI 和 MySQL)

perl - 如何强制 selectrow_array 返回错误值?