Ваш столбец date
не распознается функцией date()
, поэтому date(date)
дает NULL
.
Попробуйте оба запроса с ORDER BY NULL
, вы получите те же результаты, что и с ORDER BY date(date)
Без DISTINCT
он упорядочивает их по порядку вставки.
При DISTINCT
порядок поступает от самого DISTINCT
и применяется к столбцу date
, который является текстом, поэтому он находится в алфавитном порядке.
SQLite не поддерживает названия месяцев . Измените ваши данные на поддерживаемые форматы (см. Функции даты и времени ) или преобразуйте столбец даты в распознанный формат, прежде чем передать его в date()
(со строковыми функциями)
Например (преобразование date
в формат YYYY-mmm-dd
перед вызовом date()
работает):
(здесь CASE WHEN
ограничено вашими данными, вы можете распространить его на все месяцы)
SELECT DISTINCT date
FROM (SELECT *,
substr(date, -4) year,
substr(date, -8, 2) day,
trim(substr(date, 1, length(date)-8)) month
FROM details) as details
ORDER BY date(year
|| '-'
|| CASE WHEN month = 'April' THEN '04' ELSE '03' END
|| '-'
|| day)
, даст правильные результаты с или без DISTINCT
.