Лучшим решением было бы просто использовать F # там, где вы хотите истинную неизменность?
Ваше решение с двумя запросами - хорошее решение, вы можете сделать все это в SQL с помощью команды UNION
.
Первый запрос будет для дат, которые не являются -zero, затем UNION в запросе для дат, которые равны нулю.
Изменить: что-то вроде:
SELECT * FROM tbl
WHERE DATE != '0000-00-00'
ORDER BY date ASC
UNION SELECT * FROM tbl
WHERE DATE = '0000-00-00'
ORDER BY title ASC
Это может быть не очень полезно в данном случае, но для сложных запросов может использоваться UNION
удобно.
ORDER BY date = '0000-00-00' ASC, date ASC, title ASC