如何在MDX中轻松地将秒转换为时间戳(HH:MM:SS)

时间:2013-09-30 18:12:52

标签: date timestamp mdx olap

什么是在MDX中轻松将秒转换为时间戳(HH:MM:SS)的方法?我也想研究提供的日子。我打算通过使用一堆计算成员作为值,然后将它们全部格式化为一个字符串,但似乎必须有一个更好,更清晰的方法来做它。

2 个答案:

答案 0 :(得分:1)

您可以将秒数除以3600 * 24,这样您就有了几天,然后使用这样的格式字符串:

with member measures.duration as seconds / (3600.0 * 24.0)
           ,format_string = 'hh:mm:ss'

如果你有超过一天的持续时间,那么这可能会有点棘手,但你可以在这里找到解决方案:http://sqlblog.com/blogs/mosha/archive/2008/09/26/displaying-duration-values-mdx-expressions-in-format-string.aspx

答案 1 :(得分:0)

这是一个例子:

# -*- coding: utf-8 -*-

import re

from subprocess import Popen, PIPE, check_output

def get_processes_running():
    """
    Takes tasklist output and parses the table into a dict
    """
    tasks = check_output(['tasklist']).decode('cp866', 'ignore').split("\r\n")
    p = []
    for task in tasks:
        m = re.match(b'(.*?)\\s+(\\d+)\\s+(\\w+)\\s+(\\w+)\\s+(.*?)\\s.*', task.encode())
        if m is not None:
            p.append({"image":m.group(1).decode(),
                        "pid":int(m.group(2).decode()),
                        "session_name":m.group(3).decode(),
                        "session_num":int(m.group(4).decode()),
                        "mem_usage":int(m.group(5).decode('ascii', 'ignore'))
                        })
    return( p)

def test():
    print(*[line.decode('cp866', 'ignore') for line in Popen('tasklist', stdout=PIPE).stdout.readlines()])

    lstp = get_processes_running()
    for p in lstp:
        print(p)
    return

if __name__ == '__main__':
    test()