【问题标题】:Subtract an interval from a time value从时间值中减去间隔
【发布时间】:2014-08-13 11:18:02
【问题描述】:

我想在 PostgreSQL 中获取当前时间前 1 小时的时间。我该怎么做?

比如说现在时间是'17:37:06',那么我希望结果输出为'16:37:06'

【问题讨论】:

    标签: postgresql datetime


    【解决方案1】:

    如果你真的只想要时间,使用current_time current_timestampnow() 也会返回一个日期。

    select current_time - interval '1' hour
    

    或减去 1 小时 25 分钟:

    select current_time - interval '1:25'
    

    (请注意,如果您使用带小时分钟的间隔,则需要删除hour关键字)

    如果您确实希望日期成为结果的一部分,只需将 current_time 替换为 current_timestamp

    【讨论】:

    • interval 的附加选项限制了存储字段集,因此基本上 interval '1:25' hour 等于 1 小时 -- interval '1:25'interval '1:25 hour' 是有效的替代方案。 sqlfiddle.com/#!15/d41d8/2346
    • @pozs:谢谢,已更正(顺便说一句:我使用interval '1' hour,因为这是 SQL 标准定义的格式)
    • 这是可以理解的 -- 使用 SQL 标准,您可以编写 interval '1:25' hour to minute 或使用 iso 8601(日期/时间标准)interval 'PT1H25M',但我认为这些更难阅读。跨度>
    【解决方案2】:

    使用interval 类型对date 类型进行算术运算

    select now() - interval '1 hour';
    

    可以使用 1 个半小时这样的分数

    select now() - 1.5 * interval '1 hour';
    

    【讨论】:

    • 我得到这个:执行 SELECT 语句时出错。错误:列“间隔”不存在位置:16
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    相关资源
    最近更新 更多