Database 有没有一种方法可以让当前的时间戳只在数据库中存储日期、小时和分钟?
我将数据存储在PostgreSQL中,其中一列设置为默认的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
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和数据操作的新手。