Come recuperare argomenti ordinati per valore del campo personalizzato iso8601?

Dovresti trasformarlo in:

.order("COALESCE(CAST(custom_fields.value AS timestamp), custom_fields.value) DESC")

per una migliore leggibilità.

Ordini per sortDate e, quando manca, usi createdAt. Tutto in ordine decrescente. La query restituisce i dati esattamente come richiesto, poiché il 2020 è “maggiore” del secondo posto del 2011.

Se desideri che i valori null appaiano per ultimi, devi usare:

.order("CAST(custom_fields.value AS timestamp) DESC NULLS LAST")