Database 有没有一种方法可以让当前的时间戳只在数据库中存储日期、小时和分钟?

Database 有没有一种方法可以让当前的时间戳只在数据库中存储日期、小时和分钟?,database,postgresql,table-plus,Database,Postgresql,Table Plus,我将数据存储在PostgreSQL中,其中一列设置为默认的CURRENT\u TIMESTAMP。我正在尝试将此默认值设置为仅存储:日期、小时和分钟。有人知道我怎么做吗 我需要能够使用Ruby操作数据,然后将其显示在html页面上。目前,我可以显示这样的时间戳:2019-09-15 12:50:05.745811,但我想要更像这样的时间戳:2019-09-15 12:50 目前,我正在将表中的每一行提取到一个Ruby对象中,并将每个值定义为可访问的实例变量,因此@id=id、@content=c

我将数据存储在PostgreSQL中,其中一列设置为默认的
CURRENT\u TIMESTAMP
。我正在尝试将此默认值设置为仅存储:日期、小时和分钟。有人知道我怎么做吗

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

目前,我正在将表中的每一行提取到一个Ruby对象中,并将每个值定义为可访问的实例变量,因此
@id=id
@content=content
@timestamp=timestamp
。我想要一种在ruby中编辑如下字符串的方法:
2019-09-15 12:50:05.745811
,或者我想更容易找到一种方法,让
默认当前时间戳只存储相关数据。任何帮助,非常感谢

以下是创建我的表的方式:

创建表格我的表格(
id串行主键,
内容VARCHAR(280),
时间戳时间戳默认当前时间戳
);
使用
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')
);

请参阅。

如果您始终希望日期分辨率仅为秒,则可以在定义中指定:

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:'), ...

IMHO将列命名为与数据类型相同是非常糟糕的做法。有时它会造成混乱或错误

谢谢,这让我稍微接近了我想要显示它的方式,似乎在最后还有一些尾随的00秒。如下所示:2019-09-15 15:06:00列的数据类型为timestamp。如果不需要时间戳,则应将其声明为varchar()。那么您只需要_char(…)感谢您的解释,我非常感谢您作为Ruby和数据操作的新手。