无法从时间戳中删除毫秒

Can't drop milliseconds from timestamp

提问人:Raksha 提问时间:11/15/2023 更新时间:11/15/2023 访问量:49

问:

我有这个. 所以我已经搜索了一段时间的 SO 和 Google,在这一点上我已经尝试了一切,感觉就像......date_created2015-12-02 00:58:07.000000

date_created::timestamp(0)

to_char(date_created, 'YYYY-MM-DD HH24:MI:SS')::timestamp(0)

或返回DATE_TRUNC('second', date_created)::timestamp(0)

[XX000] ERROR: Assert
Detail: ----------------------------------------------- error:
Assert code: 1 ...

...

to_timestamp(date_created)::timestamp(0)返回

[42883] ERROR: function to_timestamp(timestamp without time zone) does not exist
Hint: No function matches the given name and argument types. You may need to add explicit type casts.

...

date_trunc('minute', date_created::timestamp)

date_trunc('minute', date_created)返回

2015-12-02 00:58:00.000000

我只想下降到愚蠢的毫秒,同时仍然将数据类型保留为日期时间或时间戳。有人有其他技巧吗?或者这根本不是一件可能的事情?

PostgreSQL 日期 时间戳 amazon-redshift

评论

0赞 Frank Heikens 11/15/2023
对于格式化,您应该使用 to_char(),但不要将其转换回时间戳。
0赞 Adrian Klaver 11/16/2023
你不能。执行此操作的唯一方法是格式化为字符串。
0赞 Adrian Klaver 11/17/2023
为什么不适合你?如 .date_created::timestamp(0)select now()::timestamp(0) 11/16/2023 08:13:20
0赞 Raksha 11/17/2023
@AdrianKlaver我不确定。它只是返回一个超级有用的“错误:断言”错误 %\
1赞 Adrian Klaver 11/17/2023
好吧,从这里看,日期/时间似乎不像 Redshift 支持 的精度规范。事实上,文档说:如果将日期插入 TIMESTAMPTZ 列,或插入具有部分时间戳的日期,则该值将隐式转换为完整时间戳值。此完整时间戳值具有默认值 (00),表示缺少的小时、分钟和秒。timestamp/timestamptz

答:

2赞 Laurenz Albe 11/15/2023 #1

影响 PostgreSQL 将时间戳呈现为字符串的方式的唯一方法是设置参数,并且任何设置都不会禁止显示小数秒。datestyle

如果您对将时间戳呈现为字符串有特殊要求,请在第二次尝试中使用 like,但省略对 的附加强制转换,因为它会取消您的工作。to_chartimestamp