如何转换此日期部分中的秒数,以便将所有秒数显示为0.047而不是0.047777777777777或0.333而不是0.33333333322?
以下代码:
((DATE_PART('day', completed_at::timestamp - created_at::timestamp) * 24 +
DATE_PART('hour', completed_at::timestamp -created_at::timestamp)) * 60 +
DATE_PART('minute', completed_at::timestamp - created_at::timestamp)) * 60 +
DATE_PART('second', completed_at::timestamp -created_at::timestamp) As Duration
答案 0 :(得分:1)
您可以使用ROUND函数http://www.w3schools.com/sql/sql_func_round.asp
你这样使用它:
ROUND(column_name,decimals)
在你的例子中(如果你想在逗号后面有3位小数):
SELECT ROUND(...,3) AS Duration FROM yourTable
(将...替换为输出0.047777777777777
答案 1 :(得分:0)
解决方案是使用timestamp(0)来定义精度而不是时间戳 - 或者在你的情况下定义时间戳(3)
" time,timestamp和interval接受一个可选的精度值p,它指定秒字段中保留的小数位数。默认情况下,精度没有明确的界限。对于时间戳和间隔类型,p的允许范围是0到6。 "
https://www.postgresql.org/docs/9.0/static/datatype-datetime.html