2011-04-06 70 views
0

我試圖以使用CDBI以下SQL:類:: DBI,類:: DBI :: AbstractSearch和Oracle TO_DATE

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。

謝謝!

回答

0

可能是最簡單的只使用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') 
}); 

我通常最終會推奧姆斯出的任何實例比my $thing = Thing->retrieve(x)更復雜的方式,我已經知道SQL所以我不不需要學習另一個試圖實現SQL的API,而且通常做得相當差。