【问题标题】:Decrease Date( Month ) in postgres在 postgres 中减少日期(月份)
【发布时间】:2014-11-06 07:22:33
【问题描述】:

我想从2014-11-05 23:18:07.452957-07 减去三个月。它应该给出像2014-08-05 23:18:07.452957-07
这样的输出 我正在尝试这个:

 SELECT created_on, DATE (created_on - INTERVAL '5 months') FROM user_authentication_logs   
 WHERE user_id = 1014 ORDER BY created_on DESC LIMIT 1

但是日期格式改变了。请帮忙。 提前致谢。

【问题讨论】:

  • 但日期格式已更改”不是可接受的错误/问题描述。你得到什么输出?请注意,日期和时间戳列具有“格式”。您看到的任何“格式”都由 SQL 客户端应用显示该值。
  • 我在 2014 年 6 月 5 日收到这个。我想保持日期格式不变。
  • 然后你的 SQL client 会显示这样的日期。要么更改 SQL 客户端的配置,要么使用 to_char() 函数按照你想要的方式格式化日期。

标签: sql postgresql date date-format


【解决方案1】:

首先,只需通过替换以下内容来删除 Date 转换:

SELECT created_on, DATE (created_on - INTERVAL '5 months') FROM user_authentication_logs   
 WHERE user_id = 1014 ORDER BY created_on DESC LIMIT 1

SELECT created_on, created_on - INTERVAL '5 months' as created_on_minus_5_months FROM user_authentication_logs   
 WHERE user_id = 1014 ORDER BY created_on DESC LIMIT 1

因为Date 类型只包含日期(没有时间)

如果您的日期格式输出发生更改,您可以使用 t_char 函数对其进行自定义

【讨论】:

    【解决方案2】:

    试试这个 我想这就是你想要的

     SELECT created_on, cast((created_on - INTERVAL '5 months')as timestamp with time zone) FROM user_authentication_logs   
     WHERE user_id = 1014 ORDER BY created_on DESC LIMIT 1;
    

    【讨论】:

      猜你喜欢
      • 2018-03-12
      • 1970-01-01
      • 2022-01-26
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-05
      • 1970-01-01
      相关资源
      最近更新 更多