|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
Подскажите, почему не группирует по дате, что-то с типом даты, не пойму 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') ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 12:07 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 12:18 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 12:19 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 12:31 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
Marinescu, Потому что to_date не предназначен для конверсии timestamp в дату а для разбора текстовых строк. Код: plsql 1. 2. 3. 4. 5. 6.
PS: идея делать doc.create_date::date BETWEEN - плохая, оно использования индекса отключит по doc.create_date если он есть. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 12:54 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
Большое спасибо, я еще только пытаюсь разобраться в этом Postgre, но меня торопят.. Огромное спасибо за помощь! А то у меня уже ступор начался от этих точек и скобочек ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 14:23 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, хорошо подметили, насчет 'опечалились', спасибо за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 14:25 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
Maxim Boguk, а не подскажете, как Between использовать корректно , чтобы период дат задать? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 14:27 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
MarinescuMaxim Boguk, а не подскажете, как Between использовать корректно , чтобы период дат задать? Вопрос не в between а в приведении timestamp к дате. Т.е. вам надо в условии указывать doc.create_date без ::date и соответственно корректное условие писать с учетом этого. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 14:38 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
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, если это несложно, конечно ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 15:17 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 15:31 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
Marinescu Код: sql 1. 2. 3. 4. 5. 6.
В итоге, вот что тут подсмотрела на форуме ). Это по-человечески? Только в этом запросе почему то отбирает только 20.01.18 , а в вашем и 20 и 21 функции форматирования/преобразования не слишком иммутабны. из-за общности. что осложняет жизнь планировщику. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 17:00 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 17:17 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
Maxim Boguk, слона то я и зевнул ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 18:06 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
Maxim BogukНаверное проще всего doc.create_date >= '2018-01-20'::date and doc.create_date < '2018-01-20'::date+1; BETWEEN бы дал тоже самое - включительно по 2018-01-21 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 21:10 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
ей то в первом сообщении именно он нужен был кстати, у меня лично create это timestamptz(0) девушка, а у вас там точно дата? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 21:13 |
|
Подскажите, пожалуйста, почему группировка по дате не работает
|
|||
---|---|---|---|
#18+
а то опять мимо индексов проедем ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2018, 21:14 |
|
|
start [/forum/topic.php?fid=53&msg=39677765&tid=1995656]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 278ms |
total: | 434ms |
0 / 0 |