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

Автор Тема: Преобразование даты в Qlikivew и Qlik Sense  (Прочитано 3890 раз)

Оффлайн asdlegioner

  • Наставник
  • **
  • Сообщений: 63
  • Рейтинг: +2/-0
    • Просмотр профиля
Подскажите пожалуйста как можно преобразовать текущий вид даты 6 мая 2015 в текстовом формате в такой вид 06.05.2015.

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Преобразование даты
« Ответ #1 : Май 31, 2015, 10:03:23 pm »
Вечер добрый.
Что мы имеем? Имеем тестовую строку.
Нам надо ее разобрать на три составляющие.
Для расчленения используйте SubField(), в качестве разделителя - пробел, при это крайние пробелы надо предварительно убрать.
Для формирования формата даты - MakeDate()
Для перевода текстового обозначения месяца в числовое используйте маппинг.
ApplyMap()  можно использовать в качестве параметра для MakeDate().

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Преобразование даты
« Ответ #2 : Июнь 01, 2015, 09:03:51 am »
Кстати, вопрос по скрипту или переменной?
Если по скрипту, то вот пример:

Месяца:
Mapping LOAD * INLINE [
    F1, F2
    апрель, 4
    апреля, 4
    апр, 4
    май, 5
    июнь, 6
    июн, 6
];

LOAD *,
 MakeDate(SubField(F1,' ', 3),ApplyMap('Месяца',SubField(F1,' ',2)),SubField(F1,' ',1)) As [Дата]
 INLINE [
    F1
    10 апреля 2015
    3 апр 2015
    6 май 2015
];

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

Re: Преобразование даты
« Ответ #2 : Июнь 01, 2015, 09:03:51 am »

Оффлайн asdlegioner

  • Наставник
  • **
  • Сообщений: 63
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: Преобразование даты
« Ответ #3 : Июнь 09, 2015, 03:45:09 pm »
Спасибо. Не подскажите как преобразовать такой вид записи в скрипте 2015/06/09 10:59:00 к 09.06.20015

Оффлайн R Dmitry

  • Новичок
  • *
  • Сообщений: 13
  • Страна: by
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: Преобразование даты
« Ответ #4 : Июнь 09, 2015, 05:39:52 pm »
А каким образом тянете данные и каков их источник?
Если из какой нибудь базы, то можно использовать функции самой БД для конвертации даты.

Оффлайн kvv

  • Гуру
  • ***
  • Сообщений: 135
  • Страна: 00
  • Рейтинг: +36/-0
    • Просмотр профиля
Re: Преобразование даты
« Ответ #5 : Июнь 09, 2015, 05:40:25 pm »
Добрый день.
Попробуйте вот так:
date(ВАША ДАТА, 'DD.MM.YYYY')

Оффлайн asdlegioner

  • Наставник
  • **
  • Сообщений: 63
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: Преобразование даты
« Ответ #6 : Июнь 09, 2015, 05:54:37 pm »
А каким образом тянете данные и каков их источник?
Если из какой нибудь базы, то можно использовать функции самой БД для конвертации даты.

Источник excel

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

Re: Преобразование даты
« Ответ #6 : Июнь 09, 2015, 05:54:37 pm »

Оффлайн asdlegioner

  • Наставник
  • **
  • Сообщений: 63
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: Преобразование даты
« Ответ #7 : Июнь 09, 2015, 06:05:12 pm »
А каким образом тянете данные и каков их источник?
Если из какой нибудь базы, то можно использовать функции самой БД для конвертации даты.

Источник excel

Так не получается. Я отсек все лишнее таким способом =left(Дата,10) получилось так 2015/06/09 теперь не знаю как убрать наклонною черту и перевернуть дату.

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Преобразование даты
« Ответ #8 : Июнь 09, 2015, 07:35:09 pm »
Привет.
Если данные грузятся из Excel и в таблицах все сделано стандартно, то есть дата - как дата.
То проблем нет никаких, просто пишем date(ceil(Дата)) as Дата и будет дата по формату без минут и секунд.
Дата хранится в числовом виде. Целые - даты, дробное значение - время.
Как бы не отображалось в Excel, для клика отдается в числовом виде , а тот опять уже делает формат по умолчанию, и время прячет. Поэтому и используем округление ceil()

Оффлайн asdlegioner

  • Наставник
  • **
  • Сообщений: 63
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: Преобразование даты
« Ответ #9 : Июнь 10, 2015, 12:55:41 am »
Привет.
Если данные грузятся из Excel и в таблицах все сделано стандартно, то есть дата - как дата.
То проблем нет никаких, просто пишем date(ceil(Дата)) as Дата и будет дата по формату без минут и секунд.
Дата хранится в числовом виде. Целые - даты, дробное значение - время.
Как бы не отображалось в Excel, для клика отдается в числовом виде , а тот опять уже делает формат по умолчанию, и время прячет. Поэтому и используем округление ceil()

Не получилось привести(

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Преобразование даты
« Ответ #10 : Июнь 10, 2015, 08:58:31 am »
Если текстовую строку требуется преобразовать в формат Даты, то можно использовать MakeDate
http://qlikview-forum.ru/qvf/index.php/topic,762.msg1564.html#msg1564

Оффлайн Eva

  • Новичок
  • *
  • Сообщений: 40
  • Страна: ru
  • Рейтинг: +8/-0
    • Просмотр профиля
Re: Преобразование даты в Qlikivew и Qlik Sense
« Ответ #11 : Декабрь 14, 2015, 12:30:32 pm »
Добрый день,коллеги! Если данные грузятся из Excel  и месяца в виде январь,февраль,март. Это значит только мэппинг поможет в числовой перевести? Больше ничего?

Оффлайн kvv

  • Гуру
  • ***
  • Сообщений: 135
  • Страна: 00
  • Рейтинг: +36/-0
    • Просмотр профиля
Re: Преобразование даты в Qlikivew и Qlik Sense
« Ответ #12 : Декабрь 14, 2015, 01:23:47 pm »
Добрый день.
Интересный вопрос - и легкий и сложный одновременно.
Пока, пришел к выводу, что только Меппинг или if может решить данную задачу.
Меппинг более правильный вариант, отрабатывать будет на много быстрее чем if.

Оффлайн kvv

  • Гуру
  • ***
  • Сообщений: 135
  • Страна: 00
  • Рейтинг: +36/-0
    • Просмотр профиля
Re: Преобразование даты в Qlikivew и Qlik Sense
« Ответ #13 : Декабрь 15, 2015, 04:40:24 pm »
Можно попробовать вот такое решение:
SET LongMonthNames='январь;февраль;март;апрель;май;июнь;июль;август;сентябрь;октябрь;ноябрь;декабрь';

Data:
LOAD * Inline [
NN, MONTH
1, январь
2, февраль
];

Store * from Data into Data.qvd (qvd);
DROP Table Data;

Data:
LOAD NN,
     Mid((Date(Date#('01 ' & MONTH & ' 2015', 'DD MMMM YYYY'))), 4, 2) as MONTH
FROM Data.qvd (qvd);

Правда, вариант с Меппингом более гибкий и лучше.