Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
02.04.2019, 09:44
|
|||
---|---|---|---|
|
|||
Сортировка типа interval |
|||
#18+
Коллеги, кто-нибудь может объяснить логику сортировки типа interval? Гугл не помог... WITH data as ( SELECT '2019-03-31 22:00'::timestamp as dt UNION ALL SELECT '2019-03-31 18:30' UNION ALL SELECT '2019-04-01 21:00' ) SELECT dt, age(dt,'2019-01-01') as a FROM data ORDER BY a; ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2019, 10:14
|
|||
---|---|---|---|
|
|||
Сортировка типа interval |
|||
#18+
_stas_k_, Документация : Вычитание дат и дат со временем также может быть нетривиальной операцией. Один принципиально простой способ выполнить такое вычисление — преобразовать каждое значение в количество секунд, используя EXTRACT(EPOCH FROM ...), а затем найти разницу результатов; при этом будет получено число секунд между двумя датами. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2019, 10:25
|
|||
---|---|---|---|
|
|||
Сортировка типа interval |
|||
#18+
Павел Лузанов, я знаю, как это обойти ) Мне интересна логика сортировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2019, 11:05
|
|||
---|---|---|---|
Сортировка типа interval |
|||
#18+
_stas_k_, сортировка интервалов штука относительно простая. Интервал пересчитывается в int128 и сравнивается. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Вот так можно заметить, что интервалы сортируются корректно. А вот вызов age даёт фокус. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2019, 12:12
|
|||
---|---|---|---|
|
|||
Сортировка типа interval |
|||
#18+
_stas_k_, Дело не в сортировке интервалов, а в том, что выдает функция age. А она "... выдаёт «символический» результат ..." (на той же странице документации). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2019, 13:02
|
|||
---|---|---|---|
Сортировка типа interval |
|||
#18+
Павел Лузанов_stas_k_, Дело не в сортировке интервалов, а в том, что выдает функция age. А она "... выдаёт «символический» результат ..." (на той же странице документации). этто немноошко странное уттверждение а именно ф-я возвращает тип "интервал", и сравниваются интервалы но вот этот тип испорчен "символьными" вариациями, "месяц" и "год" имеющими неопределенную длительность (определяемую по месту приложения) и для целей сравнения (не в составе даты) приводимые к некой средней цифре (30 для месяца) в днях. поэтому правильнее для сравнения пользоваться только стабильными "литералами" интервалов. (без годов и месяцев) а вариации нестабильные использовать там, где они нужны -- для годовых и месячных сдвигов. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&mobile=1&tid=1995264]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 154ms |
0 / 0 |