Class :: DBI, Class :: DBI :: AbstractSearch и Oracle to_date - PullRequest
0 голосов
/ 06 апреля 2011

Я пытаюсь создать следующий SQL с использованием CDBI:

select * from mytable
where ref = "foo"
  and to_date(received_date, 'DD-MM-YYYY') < to_date('01-04-2011', 'DD-MM-YYYY')

Ближайший синтаксис, который я могу придумать:

mycdbi->search_where({
    ref           => 'foo',
    received_date => { '<' => ["to_date(?, 'DD-MM-YYYY')", '01-04-2011']  }
});

Однако это не преобразование столбца mytable.received_date с использованием функции Oracle to_date .

Так, как правильно это сделать?

PS: пожалуйста, не говорите, используйте DBIC, поскольку код должен оставаться в CDBI.

спасибо!

1 Ответ

0 голосов
/ 06 апреля 2011

Может быть проще всего просто использовать retrieve_from_sql и сделать это вручную:

my @things = mycdbi->retrieve_from_sql(qq{
        ref = 'foo'
    AND to_date(received_date, 'DD-MM-YYYY') < to_date('01-04-2011', 'DD-MM-YYYY')
});

Я обычно заканчиваю тем, что выталкиваю ORM с пути для любой более сложной реализации, чемmy $thing = Thing->retrieve(x), я уже знаю SQL, поэтому мне не нужно изучать еще один API, который пытается реализовать SQL и обычно делает это довольно плохо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...