【问题标题】:Adding months to a date with dateadd使用 dateadd 将月份添加到日期
【发布时间】:2021-05-27 05:29:25
【问题描述】:

我有一组类似这样的数据:

我要做的是创建第三个字段,我们称之为length,它采用created_date 字段并为您提供基于created_date + months 的日期字段

所以实际上,第三列看起来像这样

但是当我尝试查找的方式时,它给了我一个错误:

SELECT
DATEADD('month', months, DATE(created_date)) 
FROM
table

ERROR: function date_add(unknown, double precision, date) does not exist
  Hint: No function matches the given name and argument types. You might need to add explicit type casts.

我只是使用了错误的语法类型,而我应该使用不同的函数吗?

【问题讨论】:

标签: sql postgresql date-arithmetic


【解决方案1】:

注意:根据错误消息,我假设您使用的是 Postgres。


您可以将addinterval 直接转换为date 值。由于您有一个固定的单位,使用make_interval() 是最简单的方法:

SELECT date_created + make_interval(months => "months"::integer)
FROM the_table

强制转换为integer 是必要的,因为您不能使用该函数指定小数月份。如果您确实需要,则将该值乘以一个月的间隔:

SELECT date_created + months * interval '1 month'
FROM the_table

一般来说,我建议将months 列更改为interval,这样您就不必担心这样的事情了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多