powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Подскажите, пожалуйста, почему группировка по дате не работает
18 сообщений из 18, страница 1 из 1
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677599
Marinescu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, почему не группирует по дате, что-то с типом даты, не пойму

SELECT doc.root_id as root,
doc.create_date::date as create_date

FROM edc_doc.document as doc


WHERE
doc.create_date ::date BETWEEN to_date('2018-01-20', 'YYYY-MM-DD')
and to_date('2018-01-21', 'YYYY-MM-DD')


GROUP BY to_date(doc.create_date, 'YYYY-MM-DD')
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677618
Marinescu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cори, забыла, но с count тоже самое
SELECT count(doc.root_id) as root,
doc.create_date::date as create_date

FROM edc_doc.document as doc


WHERE
doc.create_date ::date BETWEEN to_date('2018-01-20', 'YYYY-MM-DD')
and to_date('2018-01-21', 'YYYY-MM-DD')


GROUP BY to_date(doc.create_date, 'YYYY-MM-DD')


ответ :
ERROR: function to_date(timestamp with time zone, unknown) does not exist
LINE 47: GROUP BY to_date(doc.create_date, 'YYYY-MM-DD')
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677619
Marinescu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cори, забыла, но с count тоже самое
SELECT count(doc.root_id) as root,
doc.create_date::date as create_date

FROM edc_doc.document as doc


WHERE
doc.create_date ::date BETWEEN to_date('2018-01-20', 'YYYY-MM-DD')
and to_date('2018-01-21', 'YYYY-MM-DD')


GROUP BY to_date(doc.create_date, 'YYYY-MM-DD')


ответ :
ERROR: function to_date(timestamp with time zone, unknown) does not exist
LINE 47: GROUP BY to_date(doc.create_date, 'YYYY-MM-DD')
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677638
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO

странное желание дату обратно в дату преврашать в GROUP BY

судя по всему, Вы хотели TO_CHAR, но опечатались. Или можно date_trunc использовать

https://www.postgresql.org/docs/9.6/static/functions-formatting.html
https://www.postgresql.org/docs/9.6/static/functions-datetime.html
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677664
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marinescu,

Потому что to_date не предназначен для конверсии timestamp в дату а для разбора текстовых строк.

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT count(doc.root_id) as root,
doc.create_date::date as create_date
FROM edc_doc.document as doc
WHERE
doc.create_date::date BETWEEN to_date('2018-01-20', 'YYYY-MM-DD') and to_date('2018-01-21', 'YYYY-MM-DD')
GROUP BY doc.create_date::date



PS: идея делать doc.create_date::date BETWEEN - плохая, оно использования индекса отключит по doc.create_date если он есть.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677722
Marinescu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо, я еще только пытаюсь разобраться в этом Postgre, но меня торопят.. Огромное спасибо за помощь! А то у меня уже ступор начался от этих точек и скобочек
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677724
Marinescu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev, хорошо подметили, насчет 'опечалились', спасибо за помощь!
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677725
Marinescu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

а не подскажете, как Between использовать корректно , чтобы период дат задать?
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677732
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MarinescuMaxim Boguk,

а не подскажете, как Between использовать корректно , чтобы период дат задать?

Вопрос не в between а в приведении timestamp к дате.
Т.е. вам надо в условии указывать doc.create_date без ::date и соответственно корректное условие писать с учетом этого.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677753
Marinescu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

Простите, Максим, я умею только простые запросы писать y ),извините, вот, подскажите, как попроще запрос написать , чтобы отобрать данные за период и сгруппировать по дате,

SELECT count(doc.root_id) as root,
to_date(doc.create_date,'YYYY-MM-DD') as create_date
FROM edc_doc.document as doc
WHERE
to_date(doc.create_date,'YYYY-MM-DD') BETWEEN to_date('2018-01-20', 'YYYY-MM-DD') and to_date('2018-01-21', 'YYYY-MM-DD')
GROUP BY to_date(doc.create_date,'YYYY-MM-DD')

вот почему, этот ему не нравится? что я здесь не то делаю?
Я так понимаю здесь проблема с типом timestamptz , ну и конечно с моими знаниями) ,

А вам огромное мерси, Максим, вы настоящий джентльмен )

А тот , что вы написали, работает, спасибо, просто хочу немного понять, как работать с timestamptz, если это несложно, конечно
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677765
Marinescu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT count(doc.root_id) as root,
doc.create_date::date as create_date
FROM edc_doc.document as doc
WHERE
doc.create_date >= to_timestamp('2018-01-20', 'YYYY-MM-DD') and doc.create_date <= to_timestamp('2018-01-21', 'YYYY-MM-DD')
GROUP BY doc.create_date::date

В итоге, вот что тут подсмотрела на форуме ). Это по-человечески? Только в этом запросе почему то отбирает только 20.01.18 , а в вашем и 20 и 21
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677806
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marinescu
Код: sql
1.
2.
3.
4.
5.
6.
SELECT count(doc.root_id) as root,
           doc.create_date::date as create_date
    FROM edc_doc.document as doc
    WHERE
         doc.create_date >= date'2018-01-20' and doc.create_date <= date'2018-01-20' +1
    GROUP BY doc.create_date::date


В итоге, вот что тут подсмотрела на форуме ). Это по-человечески? Только в этом запросе почему то отбирает только 20.01.18 , а в вашем и 20 и 21

функции форматирования/преобразования не слишком иммутабны. из-за общности. что осложняет жизнь планировщику.
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677827
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MarinescuSELECT count(doc.root_id) as root,
doc.create_date::date as create_date
FROM edc_doc.document as doc
WHERE
doc.create_date >= to_timestamp('2018-01-20', 'YYYY-MM-DD') and doc.create_date <= to_timestamp('2018-01-21', 'YYYY-MM-DD')
GROUP BY doc.create_date::date

В итоге, вот что тут подсмотрела на форуме ). Это по-человечески? Только в этом запросе почему то отбирает только 20.01.18 , а в вашем и 20 и 21

Наверное проще всего
doc.create_date >= '2018-01-20'::date and doc.create_date < '2018-01-20'::date+1;

И внимательно думать о том чем отличается в данном случае < и <= и за какой интервал дат вам результат нужен.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677858
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

слона то я и зевнул
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677949
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukНаверное проще всего
doc.create_date >= '2018-01-20'::date and doc.create_date < '2018-01-20'::date+1;
BETWEEN бы дал тоже самое - включительно по 2018-01-21
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677950
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ей то в первом сообщении именно он нужен был

кстати, у меня лично create это timestamptz(0)
девушка, а у вас там точно дата?
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39677951
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а то опять мимо индексов проедем
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, почему группировка по дате не работает
    #39678153
Marinescu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

Добрый день, огромное спасибо всем за помощь! Вы - супер! Я еще сюда приду за помощью, спасибо за альтруизм ).
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Подскажите, пожалуйста, почему группировка по дате не работает
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]