В таблице дата хранится в формате timestamp и может содержать не только дату но и часы.
Делаю выборку количества по дням
SELECT
to_char(data1, 'DD.MM.YYYY') as d1,
COUNT( DISTINCT fio)
FROM
t1
WHERE .......
GROUP BY d1
Все работает ка надо, но даты в разнобой
Пытаюсь добавить сортировку
ORDER BY to_date(d1,'DD.MM.YYYY')
и получаю ответ - ОШИБКА: колонка "d1" не существует
Хотя просто ORDER BY d1
работает но результат, естественно не тот.
В чем ошибка?
Надо писать: ORDER BY
Надо писать:
ORDER BY to_char(data1, 'DD.MM.YYYY')
или
ORDER BY 1
Можно , но он сортирует
Можно , но он сортирует так:
1.07
1.08
2.06
2.07
2.08
и т.д.
функцией to_date хотелось вернуть на это время дату к нормальному виду.
Можно и вместо to_char() в SELECT использовать date(). Так работает, но тогда вывод в формате по умолчанию идет, некрасивый
"Можно , но он сортирует
"Можно , но он сортирует так:" - это нормально т.к. to_char возвращает символьное значение
используйте в select to_char, а в order date
Можно чуть подробнее, как для
Можно чуть подробнее, как для чайника.
Я не очень понял - колонки с исходной датой же у меня нет. И сортировать по ней после группировки я не могу, ошибка выходит.
Мне тогда надо добавлять колонку с data() в Select?
WITH q AS (VALUES (timestamp
Понял, как изначальный запрос
Понял, как изначальный запрос поправить - надо еще date(data1) в GROUP BY добавить. Тогда можно сортировать.
Спасибо.
WITH q AS (VALUES (timestamp
Ага, так тоже
Ага, так тоже интересно.
Спасибо.
В описании функции такой вещи как "два двоеточия и дате" не увидел (
форум переводит в картинку-смайлик
::date
cast (to_char(column1,
cast (to_char(column1, 'dd.mm.yyyy') as date)
Хм... и так работает!
Хм... и так работает!
да, это к тому, что нужно
да, это к тому, что нужно искать функцию cast, а не date