我有一个像2012-01-01T01:02:03.456这样的字符串,我正在使用ActiveRecord存储在Postgres数据库的时间戳中.

不幸的是,Ruby似乎切断了毫秒:

ruby-1.9.3-rc1 :078 > '2012-12-31T01:01:01.232323+3'.to_datetime
 => Mon, 31 Dec 2012 01:01:01 +0300 

Postgrs支持微秒分辨率.我怎样才能相应地保存时间戳?我需要至少毫秒的分辨率.

(PS是的,我可以在postgres中插入毫秒整数列;这有点违背了ActiveRecord的全部目的.)

UPDATE:

m.happened_at = '2012-01-01T00:00:00.32323'.to_datetime
m.save!
m.reload
m.happened_at.to_f

确实降低了毫秒数.

现在,有趣的是,在Rails和Postgres中,created_at确实显示毫秒.但其他时间戳字段(如上面的happened_at)则没有(也许Rails使用NOW()函数表示created_at,而不是传递日期时间).

Which leads to my ultimate question:
How can I get ActiveRecord to preserve millisecond resolution on timestamp fields?

推荐答案

将上面代码中的m.happened_at = '2012-01-01T00:00:00.32323'.to_datetime改为m.happened_at = '2012-01-01T00:00:00.32323'解决了这个问题,尽管我不知道为什么.

Postgresql相关问答推荐

环境变量在Bash应用程序中没有出现

Postgis超过2个表的查询在运行时爆炸

Postgres将唯一索引添加到已在分区上具有PK的分区表中,然后添加PK

PL/pgSQL中的IP递增函数

右连接 postgresql 出现语法错误

有没有办法共享数据或监控复杂 PostgresQL 事务的进度?

是否可以调整 PostgreSQL 中的数组以适应 IN 运算符?

如何在typeorm和嵌套js中将运行时变量设置为postgresql

从 PostgreSQL 中的每个组中抽取 N 个样本

PostgreSQL - 我应该如何使用 first_value()?

如何更改几何列的 SRID?

从左连接更新 Postgres

如何向文本字段添加长度约束

PostgreSQL ORDER BY 问题 - 自然排序

如何查询存储在数组中的 Rails ActiveRecord 数据

Psycopg2 使用占位符插入表格

如何只允许一个表的一行?

PostgreSQL:使用 psql 命令行实用程序时 Windows 上的编码问题

为 postgresql 存储过程设置隔离级别

Postgres Hstore 与 Redis - 性能方面