时间戳精度截止

Timestamp Precision Cut-off

这个 plpgsql 函数需要很多参数和 returns 一个类似于 table 的记录集。这就是在 pgAdmin 查询工具中执行的样子

正如我们所见,突出显示的列是一个 timestamp6 位数字 组成 PST。这样调用它:

var sql = 'select * from myschema.myfunc(, , ...);';
var datavalue = ['a549daa0-66b5-4122-936f-8f5c65055d29', '2021-03-17', '2021-04-16', -1];
db.task(async t =>
  { return t.any(sql, datavalue);}
  ).then(gooddata =>...).catch(...)

timestamp 列的值是 3 位短,下面是对应于上面第 1 行的 UTC 值,缺少最后 3 位 385

我如何取回 6 位数字或者这就是 pg-promise 的工作方式?

密钥为JavaScript,其变体仅支持 3 位数字,它截断了最后 3 位数字而不是四舍五入

解决办法是四舍五入到两位数然后比较

if (select tableTimestamp::timestamp(2) = parameter::timestamp(2) from mytable where ...) then Update mytable ...; else raise exception ...; end if;

P.S., withwithout time zone 令人困惑。