【问题标题】:How to truncate seconds from timestamp in postgres?如何从 postgres 中的时间戳截断秒数?
【发布时间】:2022-01-16 19:32:15
【问题描述】:

我的表中有以下字段:

VISIT_DATE TIMESTAMP(0)

它是这样保持时间的:

2022-01-13 11:04:15

有人能告诉我可以切断那几秒钟吗?我真的不需要它们。 我想按以下格式保持时间:

2022-01-13 11:04

【问题讨论】:

  • 你是这个意思? SELECT date_trunc('minute',VISIT_DATE)?
  • 如果这只是格式问题,那么SELECT to_char(VISIT_DATE, 'yyyy-mm-dd hh24:mi')

标签: sql postgresql


【解决方案1】:

要么使用date_trunc 以分钟为单位截断时间戳,这将返回不带秒的时间戳,或者使用to_char(如果只是格式化输出):

SELECT date_trunc('minute',VISIT_DATE) FROM t;
SELECT to_char(VISIT_DATE,'yyyy-mm-dd hh24:mi') FROM t;

演示:

使用date_trunc(结果为时间戳):

SELECT date_trunc('minute','2022-01-13 11:04:15'::timestamp);

     date_trunc      
---------------------
 2022-01-13 11:04:00
(1 Zeile)

使用to_char(结果为文本):

SELECT to_char('2022-01-13 11:04:15'::timestamp,'yyyy-mm-dd hh24:mi');

     to_char      
------------------
 2022-01-13 11:04

【讨论】:

  • 当有人想从数据库中检索数据时它正在工作。但是我想要我的表中没有那几秒钟的简单时间戳字段。可能吗?或者这只是一个愚蠢的问题。
  • @Karord 我明白了。好吧,您不能将数据类型更改为不存储秒数。您可以做的是在您的插入/更新中将它们设置为 0,或者只是在查询时忽略它们,如我上面演示的那样。要真正以您想要的格式存储这些时间戳,您需要将它们存储为文本,这不是一个好主意:) 干杯
【解决方案2】:

试试这个 SELECT FORMAT(VISIT_DATE, 'yyyy-mm-dd HH:mm')

【讨论】:

    猜你喜欢
    • 2021-07-11
    • 2014-03-25
    • 2018-03-24
    • 1970-01-01
    • 2016-03-17
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多