从时间戳中丢弃毫秒部分
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;
它将返回“没有时区的时间”数据类型
【讨论】:
以上是关于从时间戳中丢弃毫秒部分的主要内容,如果未能解决你的问题,请参考以下文章