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

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: asdlegioner от 31 мая 2015, 06:35:30

Название: Преобразование даты в Qlikivew и Qlik Sense
Отправлено: asdlegioner от 31 мая 2015, 06:35:30
Подскажите пожалуйста как можно преобразовать текущий вид даты 6 мая 2015 в текстовом формате в такой вид 06.05.2015.
Название: Re: Преобразование даты
Отправлено: admin от 31 мая 2015, 10:03:23
Вечер добрый.
Что мы имеем? Имеем тестовую строку.
Нам надо ее разобрать на три составляющие.
Для расчленения используйте SubField(), в качестве разделителя - пробел, при это крайние пробелы надо предварительно убрать.
Для формирования формата даты - MakeDate()
Для перевода текстового обозначения месяца в числовое используйте маппинг.
ApplyMap()  можно использовать в качестве параметра для MakeDate().
Название: Re: Преобразование даты
Отправлено: admin от 01 июня 2015, 09:03:51
Кстати, вопрос по скрипту или переменной?
Если по скрипту, то вот пример:


Месяца:
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
];
Название: Re: Преобразование даты
Отправлено: asdlegioner от 09 июня 2015, 03:45:09
Спасибо. Не подскажите как преобразовать такой вид записи в скрипте 2015/06/09 10:59:00 к 09.06.20015
Название: Re: Преобразование даты
Отправлено: R Dmitry от 09 июня 2015, 05:39:52
А каким образом тянете данные и каков их источник?
Если из какой нибудь базы, то можно использовать функции самой БД для конвертации даты.
Название: Re: Преобразование даты
Отправлено: kvv от 09 июня 2015, 05:40:25
Добрый день.
Попробуйте вот так:
date(ВАША ДАТА, 'DD.MM.YYYY')
Название: Re: Преобразование даты
Отправлено: asdlegioner от 09 июня 2015, 05:54:37
Цитата: R Dmitry от 09 июня  2015, 05:39:52  
А каким образом тянете данные и каков их источник?
Если из какой нибудь базы, то можно использовать функции самой БД для конвертации даты.

Источник excel
Название: Re: Преобразование даты
Отправлено: asdlegioner от 09 июня 2015, 06:05:12
Цитата: asdlegioner от 09 июня  2015, 05:54:37  
Цитата: R Dmitry от 09 июня  2015, 05:39:52  
А каким образом тянете данные и каков их источник?
Если из какой нибудь базы, то можно использовать функции самой БД для конвертации даты.

Источник excel

Так не получается. Я отсек все лишнее таким способом =left(Дата,10) получилось так 2015/06/09 теперь не знаю как убрать наклонною черту и перевернуть дату.
Название: Re: Преобразование даты
Отправлено: admin от 09 июня 2015, 07:35:09
Привет.
Если данные грузятся из Excel и в таблицах все сделано стандартно, то есть дата - как дата.
То проблем нет никаких, просто пишем date(ceil(Дата)) as Дата и будет дата по формату без минут и секунд.
Дата хранится в числовом виде. Целые - даты, дробное значение - время.
Как бы не отображалось в Excel, для клика отдается в числовом виде , а тот опять уже делает формат по умолчанию, и время прячет. Поэтому и используем округление ceil()
Название: Re: Преобразование даты
Отправлено: asdlegioner от 10 июня 2015, 12:55:41
Цитата: admin от 09 июня  2015, 07:35:09  
Привет.
Если данные грузятся из Excel и в таблицах все сделано стандартно, то есть дата - как дата.
То проблем нет никаких, просто пишем date(ceil(Дата)) as Дата и будет дата по формату без минут и секунд.
Дата хранится в числовом виде. Целые - даты, дробное значение - время.
Как бы не отображалось в Excel, для клика отдается в числовом виде , а тот опять уже делает формат по умолчанию, и время прячет. Поэтому и используем округление ceil()

Не получилось привести(
Название: Re: Преобразование даты
Отправлено: admin от 10 июня 2015, 08:58:31
Если текстовую строку требуется преобразовать в формат Даты, то можно использовать MakeDate
http://qlikview-forum.ru/qvf/index.php/topic,762.msg1564.html#msg1564 (http://qlikview-forum.ru/qvf/index.php/topic,762.msg1564.html#msg1564)
Название: Re: Преобразование даты в Qlikivew и Qlik Sense
Отправлено: Eva от 14 декабря 2015, 12:30:32
Добрый день,коллеги! Если данные грузятся из Excel  и месяца в виде январь,февраль,март. Это значит только мэппинг поможет в числовой перевести? Больше ничего?
Название: Re: Преобразование даты в Qlikivew и Qlik Sense
Отправлено: kvv от 14 декабря 2015, 01:23:47
Добрый день.
Интересный вопрос - и легкий и сложный одновременно.
Пока, пришел к выводу, что только Меппинг или if может решить данную задачу.
Меппинг более правильный вариант, отрабатывать будет на много быстрее чем if.
Название: Re: Преобразование даты в Qlikivew и Qlik Sense
Отправлено: kvv от 15 декабря 2015, 04:40:24
Можно попробовать вот такое решение:
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);


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