postgresql - 插入到 postgres 时省略尾随零

标签 postgresql date go

在 PostgreSQL 中插入毫秒部分包含零的日期时正在跳过。如果它在日期中有非零部分,它将正确插入到数据库中。

例如:2019-06-01 11:59:59:371Z这将正确插入数据库,但是当我插入 '2010-06-21 11:59:59:010Z'然后将变为 '2010-06-21 11:59:59:01Z'最后一个零部分被跳过。

我用了一个查询

SELECT to_char(date, 'YYYY-MM-DD HH:MI:SS:MSZ') 
FROM table_name; 

那么我将正确获取数据,但它是字符串格式,如果我更改为 time.Time 格式,则会跳过零部分。

是否有任何方法可以强制存储毫秒而不跳过零到 postgres 或任何解决此问题的方法
2099-06-21T23:59:59.371Z -> 2099-06-21T23:59:59.371Z
2099-06-21T23:59:59.000Z -> 2099-06-21T23:59:59Z
2099-06-21T23:59:59.010Z -> 2099-06-21T23:59:59.01Z
2010-06-21T23:59:59.001Z -> 2010-06-21T23:59:59.001Z
2010-06-21T23:59:59.100Z -> 2010-06-21T23:59:59.1Z

最佳答案

小数分隔符后面的尾随零与数字的准确性无关。

如果您的应用程序希望小数点分隔符后有某个固定位数,请使用 to_char 适本地格式化时间戳。查询表时的函数。

如果您想避免使用 to_char 进行查询,在表上定义一个将时间戳格式化为字符串的 View ,并在查询中使用该 View 。

无论如何,不​​要将时间戳作为字符串存储在表中。您将丢失有效性检查和日期算术,并且会浪费存储空间。

关于postgresql - 插入到 postgres 时省略尾随零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60558218/

相关文章:

mysql - 将 monad 组合翻译成 SQL

sql - 仅选择(至少)属于某些组的成员的用户

postgresql - Django ORM 保留打开的连接

java - Hibernate:两个外键作为 id

删除多年范围内的所有日期

go - Gorm与golang : Preload does not work as expected

go - 重新创建由 Request.Write 保留的 http.Request

Java将8601格式的字符串解析为更具可读性的日期解析错误

java - 检查 csv 文件中日期的格式

go - 如何检查值是否为 float