2016-08-17 1 views
0

So habe ich einen Fehler mit meiner Rake-Aufgabe, ich versuche, die Rake-Aufgabe zu vereinfachen. Dies ist die Zeile i aufZeit ohne Zeitzone Fehler in Rails

events = Event.where('eventname ILIKE ? AND time ILIKE ? AND date = ?', "%#{row.product_name}%", "%#{row.delivery_time}%", "%#{row.valid_from}%") 

stecken habe immer (wenn ich Zeit und Lieferzeit entfernen Sie es läuft gut)

aber wenn ich es mit diesem Lauf es wird zu diesem Fehler fest:

ActiveRecord::StatementInvalid: PG::UndefinedFunction: ERROR: operator does not exist: time without time zone ~~* unknown 
LINE 1: ...LIKE '%Portsmouth Guildhall Membership%' AND time ILIKE '%23... 
                  ^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. 
: SELECT "events".* FROM "events" WHERE (eventname ILIKE '%Portsmouth Guildhall Membership%' AND time ILIKE '%23:00:00%' AND date = '%2016-12-31%') 

Irgendwelche Ideen wäre toll, gerade für eine weitere Klarstellung: die Zeit, da dies aus der Ereignistabelle kommt:

18:00:00 

Und der Tabellentyp ist ein Zeitfeld

Sam

+0

Warum Sie ILIKE verwenden möchten auf Zeitfeld und warum nicht nur 'time =?' – Salil

Antwort

0

Nun, der Fehler auftritt, weil Sie eine String-Operation vor der Verwendung auf den Zeitstempel in eine Zeichenfolge explizit konvertieren müssen. zB:

select * from course_statuses where updated_at ILIKE '%13:24:51%' 

Über einem mir Fehler geben wird, aber nach updated_at typecasting updated_at :: Text wird kein Fehler kommen:

select * from course_statuses where updated_at::text ILIKE '%13:24:51%' 

versuchen Sie es auf pgadmin3