[英]PostgreSQL: operator does not exist: timestamp without time zone == timestamp without time zone
[英]Is there a native technique in PostgreSQL to force "timestamp without time zone" to not include milliseconds?
我正在使用 PostgreSQL 9.6.17。 (从 MySQL 迁移)
Java 程序在表中写入日期。 日期格式如下: 2019-01-01 09:00:00
但它也可以是2019-01-01 09:00:00.00
或2019-01-01 09:00:00.000
插入数据库时,这会在检索时弄乱我程序中的日期管理。
在插入时,我希望所有日期都具有相同的格式: 2019-01-01 09:00:00
。 该列使用的数据类型是timestamp without a time zone
。
如何通过配置或 SQL 查询告诉 postgresql 在timestamp without timezone
输入毫秒?
此 数据类型文档未提供任何相关信息。
time、timestamp 和 interval 接受一个可选的精度值 p,它指定保留在秒字段中的小数位数。 默认情况下,没有明确的精度限制。 p 的允许范围是从 0 到 6
所以只需将您的列定义为timestamp(0)
,例如:
create table foo
(
some_timestamp timestamp(0)
);
如果您有一个包含数据的现有表,您可以简单地更改列:
alter table some_table
alter column some_timestamp type timestamp(0);
如果您现在插入一个带毫秒的时间戳,该值将被四舍五入以删除毫秒。
请注意,从技术上讲,您的存储值仍然有毫秒,但它们始终设置为0
你可以cast
:
mytimestamptz::timestamp(0)
这会将结果四舍五入到最接近的秒。 如果要截断,请改为:
date_trunc('second', mytimestamp)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.