-2

我将数据存储在 PostgreSQL 中,其中一列设置为 default CURRENT_TIMESTAMP。我试图将此默认设置为仅存储:日期、小时和分钟。有谁知道我该怎么做?

我需要能够使用 Ruby 操作数据,然后将其显示在 html 页面上。目前我可以显示这样的时间戳:2019-09-15 12:50:05.745811但想要更像这样的东西:2019-09-15 12:50

目前,我将表的每一行提取到一个 Ruby 对象中,并将每个值定义为可访问的实例变量so@id = id和. 我想要一种方法来编辑这样的字符串:在 ruby​​ 中或者我猜可能更容易找到一种只存储相关数据的方法。任何帮助,非常感谢。@content = content@timestamp = timestamp2019-09-15 12:50:05.745811DEFAULT CURRENT_TIMESTAMP

这就是我的表的创建方式:

CREATE TABLE my_table (
  id SERIAL PRIMARY KEY, 
  content VARCHAR(280), 
  timestamp timestamp DEFAULT CURRENT_TIMESTAMP
);
4

2 回答 2

1

如果您总是希望您的日期分辨率只到秒,那么您可以在定义中指定:

CREATE TABLE my_table (
  id SERIAL PRIMARY KEY, 
  content VARCHAR(280), 
  timestamp timestamp(0) DEFAULT CURRENT_TIMESTAMP
);

如果您希望能够处理和/或显示小数秒,请在选择时进行转换:

Select ..., timestamp::timestamp(0) ...

当您想显示较少的第二精度时,您必须使用 to_char(...) 并指定所需的掩码,因此在您的示例 2019-09-15 12:50 中:

select ... to_char(timestamp, 'yyyy-mm-dd hh24:mi:'), ...

恕我直言,将列命名为与数据类型相同的做法是非常糟糕的做法。它有时会引起混乱或错误

于 2019-09-15T17:20:25.683 回答
1

用于to_char()在几分钟后删除所有内容并to_timestamp()转换回timestamp

CREATE TABLE my_table (
  id SERIAL PRIMARY KEY, 
  content VARCHAR(280), 
  timestamp timestamp DEFAULT to_timestamp(to_char(current_timestamp, 'YYYY-MM-DD HH24:MI'), 'YYYY-MM-DD HH24:MI')
);

演示

于 2019-09-15T13:49:31.387 回答