如何将日期设置为“MM / DD / YYYY”格式和以下查询的“百分比”结果

问题描述 投票:1回答:1

这是我的查询,我正在大脑冻结如何转换结果以反映日期为“MM / DD / YYYY”格式,以便结果打印出百分比而不是十进制输出。

c.execute("""WITH num_requests AS (
             SELECT time::date AS day, count(*)
             FROM log
             GROUP BY time::date
             ORDER BY time::date
            ), num_errors AS (
             SELECT time::date AS day, count(*)
             FROM log
             WHERE status != '200 OK'
             GROUP BY time::date
             ORDER BY time::date
            ), error_rate AS (
             SELECT num_requests.day,
                num_errors.count::float / num_requests.count::float * 100
                AS error_pc
             FROM num_requests, num_errors
             WHERE num_requests.day = num_errors.day
            )
            SELECT * FROM error_rate WHERE error_pc > 1
        """)
sql date format date-format
1个回答
1
投票

PostgreSQL date默认格式为YYYY-MM-DD。如果日期以相同的格式存储为字符串,则可以将typecast设为日期,就像使用::date一样。将它作为日期,您可以使用to_char函数将其再次格式化为文本字符串。

to_char(time::date,'mm/dd/yyyy')

相同的to_char函数将帮助您将百分比表示为一个数字。但是,如果数字是一个比率而不是一个百分比,那么你需要进行乘法运算:

to_char(100*rate,'FM999.90"%"') AS pct

但是,我建议从宿主语言(Java,Python等)中控制和执行格式化。我认为将格式化从SQL中删除是一种更简洁的方法。

© www.soinside.com 2019 - 2024. All rights reserved.