将双精度转换为日期格式

时间:2017-04-13 08:42:26

标签: sql postgresql

我有约会,有些日子我需要添加它。我有一个带有值的双变量,例如27,如何将它添加到我当前的日期?

1 个答案:

答案 0 :(得分:2)

Use datemath with the interval type...

test=# SELECT now() + interval '27 days';
           ?column?
-------------------------------
 2017-05-10 03:44:44.807499-05
(1 row)

如果27是int,numeric或double精度,请使用make_interval(如果需要,转换为int)

SELECT now() + make_interval(0,0,0,27);
SELECT now() + make_interval(0,0,0,yourcol::int);

这是签名

make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0)

@Pozs提出了一个有效点

  像这样的铸造可能会导致严重的精度损失(即值为27.9) - 另一方面,乘法可能更符合OP的需求(f.ex.27.9 *间隔'1天')。这里也存在一些舍入误差,但影响要小得多。 - pozs

我认为没有分数天。如果你有可以使用这种方法,他提到要做这项工作。

SELECT now() + yourcol * interval '1 day';