从时间戳中丢弃毫秒部分

Posted

技术标签:

【中文标题】从时间戳中丢弃毫秒部分【英文标题】:Discard millisecond part from timestamp 【发布时间】:2012-04-30 02:07:57 【问题描述】:

如何丢弃/舍入millisecond 部分,如果second 部分也从timestamp w/o timezone 中删除更好?

【问题讨论】:

【参考方案1】:

投射到timestamp(0)timestamptz(0) 轮回 到整秒:

SELECT now()::timestamp(0);

分数不存储在这种类型的表列中。

date_trunc() 截断(保持秒数不变)——这通常是你真正想要的:

SELECT date_trunc('second', now()::timestamp);

【讨论】:

请注意,timestamp(0) 和 timestamptz(0) 将舍入而不是截断。如果您想按原样保留时间戳的其余部分,请使用 date_trunc。 不起作用,它会抛出错误[Amazon](500310) Invalid operation: Assert @SlavikMeltser:我的答案中的表达式在 Postgres 中有效。 100%。您的问题显然有不同的原因。 @ErwinBrandstetter 我正在使用 Amazon Redshift。可能他们已经在 Redshift 中删除了这个功能。 @SlavikMeltser:Redshift 不是 Postgres。它是从 Postgres 8.0 版分叉出来的 - 非常 很久以前。【参考方案2】:

丢弃毫秒数:

SELECT DATE_TRUNC('second', CURRENT_TIMESTAMP::timestamp);

2019-08-23 16:42:43

丢弃秒数:

SELECT DATE_TRUNC('minute', CURRENT_TIMESTAMP::timestamp);

2019-08-23 16:42:00

【讨论】:

【参考方案3】:

如果你只是想要时间,这里是 postgres 的代码

SELECT DATE_TRUNC('second', CURRENT_TIMESTAMP::timestamp)::time;

它将返回“没有时区的时间”数据类型

【讨论】:

以上是关于从时间戳中丢弃毫秒部分的主要内容,如果未能解决你的问题,请参考以下文章

如何删除时间戳中的 freq='W-FRI' 部分

从时间戳中提取时间?

SQL 从时间戳中提取小时

从 SQL 中的时间戳中提取时间

从 MYSQL 上的时间戳中提取日/月/年

如何通过时间戳排序从时间戳中获取月份和年份的唯一记录