Почему MySQL DATE_FORMAT печатает пустой результат? - PullRequest
2 голосов
/ 08 сентября 2010

Последние пару часов я пытался отформатировать метку времени 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;
}

Результаты

TIME: 

Он вообще не печатает отформатированное время, пусто !

Когда я пытаюсь напечатать отметку времени, она ничего не печатает,но если бы я удалил DATA_FORMAT и просто сделал SELECT timestamp FROM foo, тогда он печатает отметку времени просто отлично, хотя и не отформатирован.Кто-нибудь может высказать свое мнение по этому вопросу, пожалуйста?

1 Ответ

7 голосов
/ 08 сентября 2010

Возвращенный хеш имеет заголовки столбцов ключей, предоставленных базой данных. При использовании подобной функции заголовок столбца на самом деле имеет вид «DATE_FORMAT (отметка времени,«% m /% d /% y »)». Попробуйте изменить ваш SQL так:

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