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

Автор Тема: Округление времени до секунд (Qlikview)  (Прочитано 820 раз)

Оффлайн d.pimkin

  • Новичок
  • *
  • Сообщений: 28
  • Рейтинг: +3/-0
    • Просмотр профиля
Округление времени до секунд (Qlikview)
« : Февраль 29, 2016, 02:05:49 pm »
Всем доброго времени суток!

Столкнулся со следующей проблемой: собираю уникальные (distinct) значения даты-времени (timestamp) из разных источников в одну таблицу с полями "host" и "event_date". Затем привожу ее к виду "host", "event_date_from", "event_date_to" следующим скриптом:
LOAD
host_name,
event_date_from,
event_date_to,
Interval(event_date_to-event_date_from,'hh:mm:ss') as event_duration;
LOAD
host,
Timestamp(event_date) as event_date_from,
Timestamp(If(Previous(host)=host,Previousevent_date)-(1/86400),'$(vNow)')) as event_date_to
Resident events
Order By host, event_date desc;
Т.е. в отсортированной по дате (по убыванию) таблице, для каждого события, в качестве event_date_to беру предыдущий event_date и вычитаю из него секунду. Для самого последнего события event_date_to равняется текущему времени.[/code]

Так вот, не смотря на то, что беру уникальные значение по Timestamp (SET TimestampFormat='DD.MM.YYYY hh:mm:ss'), закрадываются такие значения, которые в числовом представлении отличаются на миллисекунды, а timestamp у них одинаковый. Из-за чего, после преобразования точность event_duration равна миллисекундам, т.е. есть значения менее секунды или между секундами. Из-за этого, в свою очередь, появляются одинаковые event_duration в формате 'hh:mm:ss', однако разные в номерном представлении.

Откуда берутся миллисекунды? Я уже пытался все округлять до секунд путем LOAD
host_name,
Timestamp(Floor(event_date_from*86400)/86400) as event_date_from,
Timestamp(Floor(event_date_to*86400)/86400) as event_date_to;
Не помогает.

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1005
  • Страна: ru
  • Рейтинг: +103/-0
    • Просмотр профиля
Re: Округление времени до секунд
« Ответ #1 : Март 01, 2016, 06:51:33 pm »
Привет, время время может хранится числом секунд, миллисекунд , наносекунд.
Выясните как хранится время в источнике, какое число соответствует какой дате.
И если оно не в секундах, то потребуется избавиться от лишних мгновений, разделить на 10 в какой-нибудь степени и дальше работать с округленным, целым числом.