Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Декабрь 18, 2017, 06:18:10 am

Автор Тема: Month и timestamp without time zone  (Прочитано 553 раз)

Оффлайн dbf_usr

  • Новичок
  • *
  • Сообщений: 4
  • Страна: pl
  • Рейтинг: +2/-0
    • Просмотр профиля
Month и timestamp without time zone
« : Январь 20, 2017, 02:41:03 am »
Тяну данные из 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

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1005
  • Страна: ru
  • Рейтинг: +103/-0
    • Просмотр профиля
Re: Month и timestamp without time zone
« Ответ #1 : Январь 20, 2017, 09:12:55 am »
Вы это делаете в Select?
Используйте преобразование полей в операторе предшествующей загрузки
load date(...)..;
select from;
Все что в селекте идет через соединение к базе через драйвер, поэтому в нем пишем только понятное для конкретной СУБД.

Оффлайн dbf_usr

  • Новичок
  • *
  • Сообщений: 4
  • Страна: pl
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: Month и timestamp without time zone
« Ответ #2 : Январь 20, 2017, 01:03:41 pm »
Да, в SELECT делаю.
Я подключаюсь к базе и Селектами выдергиваю несколько таблиц, поля по которым они связаны представляются одинаковыми и сам Клик их связывает.
вот могу получить или номер месяца
extract(MONTH from order_client.date_order) As "Месяц",
или заменить его на название
CASE
    WHEN extract(MONTH from order_client.date_order)=1 THEN 'январь'
    WHEN extract(MONTH from order_client.date_order)=2 THEN 'февраль'
    WHEN extract(MONTH from order_client.date_order)=3 THEN 'март'
    WHEN extract(MONTH from order_client.date_order)=4 THEN 'апрель'
    WHEN extract(MONTH from order_client.date_order)=5 THEN 'май'
    WHEN extract(MONTH from order_client.date_order)=6 THEN 'июнь'
    WHEN extract(MONTH from order_client.date_order)=7 THEN 'июль'
    WHEN extract(MONTH from order_client.date_order)=8 THEN 'август'
    WHEN extract(MONTH from order_client.date_order)=9 THEN 'сентябрь'
    WHEN extract(MONTH from order_client.date_order)=10 THEN 'октябрь'
    WHEN extract(MONTH from order_client.date_order)=11 THEN 'ноябрь'
    WHEN extract(MONTH from order_client.date_order)=12 THEN 'декабрь'   
    ELSE '0'
  END AS "Месяц", 
замена на название не подходит - неправильно сортируются - графики, не верный и порядок месяцев в таблицах.

Неофициальный форум пользователей QlikView & Qlik Sense

Re: Month и timestamp without time zone
« Ответ #2 : Январь 20, 2017, 01:03:41 pm »

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1005
  • Страна: ru
  • Рейтинг: +103/-0
    • Просмотр профиля
Re: Month и timestamp without time zone
« Ответ #3 : Январь 20, 2017, 01:27:52 pm »
Дату возьмите, и с ней уже будете работать средствами клика.

Оффлайн dbf_usr

  • Новичок
  • *
  • Сообщений: 4
  • Страна: pl
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: Month и timestamp without time zone
« Ответ #4 : Январь 22, 2017, 03:29:51 pm »
Решил так сначала выгружаю в формате простой даты:
order_client.date_order::date As "Дата чека",А потом в пост обработке делаю преобразование:
order_client:
Load *,
 month("Дата чека") as Мес,
 WeekDay("Дата чека") as День 
From order_client.qvd (qvd);
Может кому-то поможет.
Спасибо за подсказку о том как лучше реализовать.