我有一个表dbo。测试在sql server中,此表包含2列Id和createdat。
Createdat列的数据类型是datetime 2,它的值包含一个7位毫秒的日期时间。(例如:'2023-08-09 15:44:30.3196369')。
我在Postregsql中有相同的表,日期列数据类型是timestamp,但timestamp只接受6位毫秒。
Postgresql中的日期列如何接受超过6位的毫秒数?
我试图在这个链接https://github.com/optiver/timestamp9中使用扩展,但它只是实现了仅检索日期时间和时区
1条答案
按热度按时间zd287kbt1#
这是7位数的小数秒。MsSQLServer的
datetime2
保持精度低至100ns(0.1μs),PostgreSQL的timestamp
只有1μs精度。Postgresql中的日期列如何接受超过6位的毫秒数?
它可以接受更多,但它会四舍五入任何超过六。
为了完全准确地容纳数据,您必须将整个数据保存保存为不同的数据类型(
bigint
?)表示自epoch以来0.1μs的数量,或者单独保存额外精度:timestamp
下至5位(最后截断以避免舍入),剩余2位为smallint
。前者是timestamp9
所做的。