diff --git a/lib/DBIx/Class/Helper/ResultSet/DateMethods1.pm b/lib/DBIx/Class/Helper/ResultSet/DateMethods1.pm index 51e76d4..e16fad9 100644 --- a/lib/DBIx/Class/Helper/ResultSet/DateMethods1.pm +++ b/lib/DBIx/Class/Helper/ResultSet/DateMethods1.pm @@ -287,7 +287,8 @@ sub _introspector { my $sql = delete $date_sql->[0]; - $sql = 'TO_TIMESTAMP(?)' if $sql eq '?'; + $sql = "TO_TIMESTAMP($sql)" + if $part =~ /second|minute|hour/; return [ "EXTRACT($part_map{$part} FROM $sql)", @$date_sql ] diff --git a/t/resultset/date-methods-1.t b/t/resultset/date-methods-1.t index 0b59696..7f1bc53 100644 --- a/t/resultset/date-methods-1.t +++ b/t/resultset/date-methods-1.t @@ -787,12 +787,12 @@ run_me(Oracle => { second => \[ '("a_date" + NUMTODSINTERVAL(?, ?))', 5, 'SECOND' ], }, - pluck_sql_prefix => \[ 'EXTRACT(SECOND FROM "me"."a_date")' ], + pluck_sql_prefix => \[ 'EXTRACT(SECOND FROM TO_TIMESTAMP("me"."a_date"))' ], pluck_sql_by_part => { - second => \[ 'EXTRACT(SECOND FROM "a_date")' ], - minute => \[ 'EXTRACT(MINUTE FROM "a_date")' ], - hour => \[ 'EXTRACT(HOUR FROM "a_date")' ], + second => \[ 'EXTRACT(SECOND FROM TO_TIMESTAMP("a_date"))' ], + minute => \[ 'EXTRACT(MINUTE FROM TO_TIMESTAMP("a_date"))' ], + hour => \[ 'EXTRACT(HOUR FROM TO_TIMESTAMP("a_date"))' ], day_of_month => \[ 'EXTRACT(DAY FROM "a_date")' ], month => \[ 'EXTRACT(MONTH FROM "a_date")' ], year => \[ 'EXTRACT(YEAR FROM "a_date")' ],