Cambiar la ordenación de fechas NULL en MySQL

Al ordenar por un campo de fecha los campos NULL se consideran menores que cualquier fecha definida.

Supongamos que tenemos una tabla con tres fechas: 1-1-2020, 1-1-2021 y NULL. Ordenando por ese campo de fecha ASC el resultado es:

NULL
2020-01-01
2021-01-01

y con DESC sería

2021-01-01
2020-01-01
NULL

Si queremos modificar este comportamiento y que al ordenar por un campo de fecha se considere NULL como mayor que cualquier fecha conocida tenemos que añadir un – al nombre del campo de fecha. ¡Ojo! Esto hará que si ordenamos por ASC el resultado sean fechas en orden descendiente y viceversa, así que quizá tengas que tenerlo en cuenta en tu código (en mi caso como es para ordenar una columna de una tabla de datos no importa mucho).

SELECT dateField FROM table ORDER BY -dateField ASC

NULL
2021-01-01
2020-01-01

SELECT dateField FROM table ORDER BY -dateField DESC

2020-01-01
2021-01-01
NULL

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.