powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / timestamp without time zone - помогите
14 сообщений из 14, страница 1 из 1
timestamp without time zone - помогите
    #39388167
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тяну данные из PostgreSQL, там поле типа "timestamp without time zone".
Нужно получить название месяцев, что бы они сортировались не по алфавиту, а по календарю. то есть просто заменить кейсом на на названия - не вариант.
Пробую так:
Код: [Выделить]
Month(order_client.date_order) As "Месяц",
Получаю ошибку: ErrorMsg: ERROR: function month(timestamp without time zone) does not exist;
Кто сталкивался и как исправить?
Вот пробую так (подсовываю отформатированую дату):
Код: [Выделить]
Month(date#(order_client.date_order, 'DD.MM.YYYY')) As "Месяц"
Но в итоге все равно ошибка (он почему то функцию принимает за название поля):
SQL##f - SqlState: 42703, ErrorCode: 7, ErrorMsg: ERROR: column "date" does not exist;
Error while executing the query

Всем за ранее спасибо!
...
Рейтинг: 0 / 0
timestamp without time zone - помогите
    #39388245
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
timestamp without time zone - помогите
    #39388322
2107tsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cola,
ORDER BY (date_part('month',order_client.date_order::date))
...
Рейтинг: 0 / 0
timestamp without time zone - помогите
    #39388375
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorovCola,

https://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT
И как это может помочь?
Там нет извлечения ни полной даты из которой можно достать месяц, ни месяца из штампа.
Это выдергивает только номер месяца, а не его название:
Код: sql
1.
extract(MONTH from order_client.date_order) As "Месяц",


А так не работает:
Код: sql
1.
Month(EXTRACT(dow FROM order_client.date_order)) As "Месяц1",


Про конструкцию я писал выше, там получается не тип даты, а просто текст, который нельзя отсортировать правильно - по календарю, только по алфавиту:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CASE
    WHEN EXTRACT(dow FROM order_client.date_order)=0 THEN 'Понедельник'
    WHEN EXTRACT(dow FROM order_client.date_order)=1 THEN 'Вторник'
    WHEN EXTRACT(dow FROM order_client.date_order)=2 THEN 'Среда'
    WHEN EXTRACT(dow FROM order_client.date_order)=3 THEN 'Четрверг'
    WHEN EXTRACT(dow FROM order_client.date_order)=4 THEN 'Пятница'
    WHEN EXTRACT(dow FROM order_client.date_order)=5 THEN 'Субота'
    WHEN EXTRACT(dow FROM order_client.date_order)=6 THEN 'Воскресение'
    ELSE '0'
  END AS "День недели",


Это не годится, это есть сейчас и это не правильно.
Подскажите как выковырять название месяца при помощи:
Код: sql
1.
Month(pos.order_client.date_order) As "Месяц"
...
Рейтинг: 0 / 0
timestamp without time zone - помогите
    #39388379
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2107tsm,
Не годится - 16 000 000 записей, только представьте себе время выполнения...
...
Рейтинг: 0 / 0
timestamp without time zone - помогите
    #39388391
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как все таки из этого "@#)(^!#^%!%!" "timestamp without time zone" достать правильную дату.
Нафига вобще придумывать новый формат поля с которым работать невозможно.....
...
Рейтинг: 0 / 0
timestamp without time zone - помогите
    #39388427
2107tsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cola,

select to_char(columname,'Month') from tablename ORDER BY (extract(MONTH from columname))
...
Рейтинг: 0 / 0
timestamp without time zone - помогите
    #39388429
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorovCola,

https://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT

Там половина функий не рабочих, хотя все согласно примерам:
Код: sql
1.
2.
3.
4.
5.
SELECT date_trunc('hour', TIMESTAMP '2001-02-16 20:38:40');
Result: 2001-02-16 20:00:00

SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40');
Result: 2001-01-01 00:00:00


Пример:
Результат использования:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
date_trunc('month', TIMESTAMP order_client.date_order),

ERROR:  syntax error at or near "order_client"
LINE 7: date_trunc('month', TIMESTAMP order_client.date_order),
                                      ^
********** Ошибка **********

ERROR: syntax error at or near "order_client"
SQL-состояние: 42601
Символ: 243


причем не работает во всех комбинациях, он просто не понимает, что вместо конкретной даты могут подсунуть поле базы данных...
...
Рейтинг: 0 / 0
timestamp without time zone - помогите
    #39388433
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2107tsmCola,

select to_char(columname,'Month') from tablename ORDER BY (extract(MONTH from columname))

Все с "ORDER BY" вообще не вариант.
Просто месяц в формате даты достать нужно или простой датайм.
...
Рейтинг: 0 / 0
timestamp without time zone - помогите
    #39388436
2107tsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ColavyegorovCola,

https://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT

Там половина функий не рабочих, хотя все согласно примерам:
Код: sql
1.
2.
3.
4.
5.
SELECT date_trunc('hour', TIMESTAMP '2001-02-16 20:38:40');
Result: 2001-02-16 20:00:00

SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40');
Result: 2001-01-01 00:00:00


Пример:
Результат использования:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
date_trunc('month', TIMESTAMP order_client.date_order),

ERROR:  syntax error at or near "order_client"
LINE 7: date_trunc('month', TIMESTAMP order_client.date_order),
                                      ^
********** Ошибка **********

ERROR: syntax error at or near "order_client"
SQL-состояние: 42601
Символ: 243


причем не работает во всех комбинациях, он просто не понимает, что вместо конкретной даты могут подсунуть поле базы данных...
date_trunc('month', order_client.date_order::date), приводи TIMESTAMP к типу данных ::date тогда будет работать
...
Рейтинг: 0 / 0
timestamp without time zone - помогите
    #39388440
2107tsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cola2107tsmCola,

select to_char(columname,'Month') from tablename ORDER BY (extract(MONTH from columname))

Все с "ORDER BY" вообще не вариант.
Просто месяц в формате даты достать нужно или простой датайм.
to_char(order_client.date_order,'Month') вернет название месяца https://postgrespro.ru/docs/postgrespro/9.5/functions-formatting
...
Рейтинг: 0 / 0
timestamp without time zone - помогите
    #39388443
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2107tsmColaпропущено...


Там половина функий не рабочих, хотя все согласно примерам:
Код: sql
1.
2.
3.
4.
5.
SELECT date_trunc('hour', TIMESTAMP '2001-02-16 20:38:40');
Result: 2001-02-16 20:00:00

SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40');
Result: 2001-01-01 00:00:00


Пример:
Результат использования:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
date_trunc('month', TIMESTAMP order_client.date_order),

ERROR:  syntax error at or near "order_client"
LINE 7: date_trunc('month', TIMESTAMP order_client.date_order),
                                      ^
********** Ошибка **********

ERROR: syntax error at or near "order_client"
SQL-состояние: 42601
Символ: 243


причем не работает во всех комбинациях, он просто не понимает, что вместо конкретной даты могут подсунуть поле базы данных...
date_trunc('month', order_client.date_order::date), приводи TIMESTAMP к типу данных ::date тогда будет работать
Так в том-то все и део, что нельзя привести к типу ДатаТайм или к Дата - не приводится, втом-то весть и вопрос.
...
Рейтинг: 0 / 0
timestamp without time zone - помогите
    #39388448
2107tsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cola2107tsmпропущено...

date_trunc('month', order_client.date_order::date), приводи TIMESTAMP к типу данных ::date тогда будет работать
Так в том-то все и део, что нельзя привести к типу ДатаТайм или к Дата - не приводится, втом-то весть и вопрос.
select order_client.date_order::date разве не выдаст тебе тип данных DATE a не TIMESTAMP??
...
Рейтинг: 0 / 0
timestamp without time zone - помогите
    #39388454
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо ВСЕМ!
Все получилось!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / timestamp without time zone - помогите
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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