【发布时间】:2016-08-16 09:18:47
【问题描述】:
这个问题被问了很多次,而在两个日期之间获得月份的建议查询之一不起作用。
SELECT date_part('month',age('2016-06-30', '2018-06-30'))
本次查询结果为0,应该是24个月。因为两个日期的月份都是 06。
这个可行,但与sql server函数相比有点笨拙:
SELECT date_part ('year', f) * 12 + date_part ('month', f)
FROM age ('2016-06-30', '2018-06-30') f
喜欢sql server(我认为):
DATEDIFF(month, date1, date2)
在 Postgresql 中是否没有简单的方法(如上)来计算两个日期之间的月份?如果可能的话,我宁愿不使用函数。
【问题讨论】:
-
不幸的是,我不认为 POSTGRES 提供了一种简单的方法来查找两个日期之间的月差,你的方法很好,你也可以看这里 -> sqlines.com/postgresql/how-to/datediff 。问题是什么?您的查询速度慢吗?
-
创建自定义函数的可能性是一个强大的功能,厌恶使用它们很难理解。
-
@klin 实际上并不难。 OP 询问是否有基本功能来执行此操作,而不是是否可以创建此功能。他们不是一定说他们不会使用函数,而是说“使用函数”不是对要求基本特性的问题的有效答案。
-
@PhilipCouling - 我写的不是对问题的有效答案,而是评论。
-
在处理 500 多个数据库时使用自定义函数不是我想到的第一个选项。我只想在这样做之前探索所有可能性。关于如何创建自定义函数的任何提示?
标签: postgresql date postgresql-9.1