2017-10-20 57 views
0

Je suis en train d'exécuter cette requête, mais j'obtiens cette erreur:ERREUR: COALESCE types bytea et horodatage sans fuseau horaire ne peut être égalé

ERROR: COALESCE types bytea and timestamp without time zone cannot be matched 

Je suppose que le problème est sur cette ligne:

COALESCE(:last_timestamp,date_trunc('hour', timestamp '1969-01-01 00:00:00.000000')) 

le paramètre:

:last_timestamp 

peut être NULL et ce pourquoi je fais ce cas

@Query(value="SELECT\n" + 
     " id,\n" + 
     " wristband_records_processed.device_id as deviceId,\n" + 
     " user_id as userId,\n" + 
     " rssi,\n" + 
     " record_timestamp as locationTimestamp,\n" + 
     " beacon_id as beaconId,\n" + 
     " locatable_devices.locatable_type as locatableType,\n" + 
     " coalesce(EXTRACT(EPOCH FROM (record_timestamp - lag(record_timestamp) OVER(order by record_timestamp))),0)as duration\n" + 
     " FROM wristband_records_processed\n" + 
     " LEFT JOIN locatable_devices on locatable_devices.device_id = wristband_records_processed.beacon_id\n" + 
     "where user_id = :userId and record_type != 'HANDWASH'\n" + 
     "  and rssi >= -85 AND locatable_type != 'UNKNOWN' AND wristband_records_processed.record_timestamp> COALESCE(:last_timestamp,date_trunc('hour', timestamp '1969-01-01 00:00:00.000000')) \n " + 
     "OFFSET :offset LIMIT :limit ;", nativeQuery = true) 

Nous vous remercions de l'aide

+0

j'ai essayé plusieurs façons de coulée, mais non d'entre eux travaillent pour moi –

+0

Où est last_timestamp défini et défini dans le code Spring? –

+0

si c'est juste le type, pas la valeur - essayez 'COALESCE (: last_timestamp :: text :: timestamptz' ou même' COALESCE (to_timestamp (: last_timestamp :: texte) :: timestamptz' –

Répondre

0

juste les faire la même

COALESCE(date_trunc('hour', :last_timestamp), 
     date_trunc('hour', timestamp '1969-01-01 00:00:00.000000')) 

ou

COALESCE(:last_timestamp, timestamp '1969-01-01 00:00:00.000000') 
+0

même erreur ... ne pas travaille pour moi –