Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > DBD::ODBC select запрос и timestamp


Автор: shamber 24.7.2012, 15:14
Здравствуйте!
Возникла необходимость под дебиан читать access базу данных.
Поставил unixodbc, DBD::ODBC.
Полностью базу вроде получается вытащить, а вот сделать выборку по timestamp не получается.

Код

use strict;
use warnings;
use DBI;
use Data::Dumper;
use JSON::XS;

my $dbh = DBI->connect
  (q{DBI:ODBC:test})
  or die $DBI::errstr;

my $sth = $dbh-> prepare("SELECT val from buf WHERE dd_mm_yyyy= ?") or die $dbh->errstr();
$sth->execute('2012-07-22 00:00:00') or die $dbh->errstr();
my $table;
my $tbl_ary_ref;
$tbl_ary_ref = $sth->fetchall_arrayref;
     if (defined $tbl_ary_ref){
         $table->{date} = $tbl_ary_ref;
     }
    $tbl_ary_ref  = encode_json $table;
    print qq{JSON-------------------JSON\n};
    print $tbl_ary_ref."\n";
    
$sth->finish;
$dbh->disconnect;

получаю Ошибку
Error at Line : syntax error near ?
А если меняю на 
Код

my $sth = $dbh-> prepare("SELECT val from buf WHERE dd_mm_yyyy= {ts '2012-07-22 00:00:00'}") or die $dbh->errstr();

то получаю 
Calling mdb_test_sarg on unknown type.  Add code to mdb_test_sarg() for type 8

Помогите правильно составить запрос.

Автор: shamber 24.7.2012, 15:35
Блин походу это косяк самого драйвера. 
Calling mdb_test_sarg on unknown type.  Add code to mdb_test_sarg() for type 8 после этого он возвращает пустой результат.

Можно ли это  как-то побороть?

Автор: Loki 21.7.2013, 06:53
Месяца 2 назад писал похожий мигрейшен для mdb, только была проблема с dsn. У тебя в скрипте оно вообще не используется, откуда твой скрипт знает какую базу нужно открывать?

Автор: shamber 26.1.2014, 17:42
я в результате забил и использовал mdb-export

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)