任何正文都可以告诉如何在将当前时间插入Postgres数据库表中的timestamp列时删除或跳过毫秒部分。实际上,包含数据类型timestamp without timezone
和默认值的列设置为now()
,即它将采用当前日期和时间。
它插入了正确的日期和时间,但它以毫秒为单位,例如输入的格式为" 2015-01-07 10:27:44.234534"有毫秒的部分,即234534,我不想插入。我只想要插入的数据为" 2015-01-07 10:27:44"。任何机构都可以告诉我,而不更改该列的数据类型如何插入跳过毫秒部分的当前日期和时间。
答案 0 :(得分:5)
更改默认值以消除毫秒:
create table foo
(
id integer not null primary key,
created_at timestamp default date_trunc('second', current_timestamp)
);
或者更改现有表格的默认值:
alter table foo
alter column created_at set default date_trunc('second', current_timestamp);
要更改现有值,您可以使用:
update foo
set created_at = date_trunc('second', created_at)
where created_at is not null;
除了使用date_trunc
之外,您还可以为更新语句转换值created_at::timestamp(0)
,或者为默认值转换current_timestamp::timestamp(0)
。
答案 1 :(得分:1)
另外,如果您可以修改该列的数据类型,则可以默认插入CURRENT_TIME
:
CREATE TABLE my_table (
col1 TEXT,
col2 INTEGER,
ts TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP
);
括号之间的0表示您不想要任何毫秒。有关详细信息,请参阅documentation。