postgresql中两个日期之间的差异

2023-12-10

功能:

CREATE FUNCTION diff(d1 date,d2 date) RETURNS int AS $$
BEGIN
IF d1 = NULL THEN
RETURN SELECT extract(year from age(current_date,d2));
ELSE
RETURN SELECT extract(year from age(d1,d2));
END IF;
END
$$ language plpgsql;

我的要求是找出两个日期之间的年份差异。所以,我写了上面的函数。此处,如果 d1 为 NULL,则为其分配当前日期。但是,它会产生如下所示的错误。

ERROR:  syntax error at or near "SELECT"
LINE 1: SELECT  SELECT extract(year from age(current_date, $1 ))
QUERY:  SELECT  SELECT extract(year from age(current_date, $1 ))
CONTEXT:  SQL statement in PL/PgSQL function "diff" near line 4 

有没有人帮我解决这个问题。


Try :

date_part('year',age(coalesce(d1,current_date), d2))::int;

age(d1,d2)函数按以下格式返回两个日期之间的年数、月数和天数:

xxx year(s) xxx mon(s) xxx day(s).

从这个输出使用date_part()选择唯一的年份差异。并且也不需要放置 if 语句来处理NULL正如我所补充的coalesece首先返回NON Null值,所以如果d1 is NULL它返回cuurent_date

功能结构:

CREATE OR REPLACE FUNCTION diff(d1 date,d2 date) RETURNS int AS $$
BEGIN

 RETURN date_part('year',age(coalesce(d1,current_date), d2))::int;
END
$$ language plpgsql;

函数调用:

select * from diff(null,'2010-04-01');
select * from diff('2012-10-01','2010-04-01');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

postgresql中两个日期之间的差异 的相关文章

  • 大型数据集的报告工具/查看器

    我有一个数据处理系统 可以根据其处理的数据生成非常大的报告 我所说的 大 是指该系统的 小 执行在转储到 CSV 文件中时会产生大约 30 MB 的报告数据 而大数据集大约为 130 150 MB 我确信有人有更大的想法 大 但这不是重点
  • 与 Postgres 的 TCP 连接安全吗?需要 SSL 吗?

    早上好 我正在浏览 Postgresql 配置文件 最近注意到有一个ssl选项 我想知道什么时候需要这样做 假设您有一个应用程序服务器和一个数据库服务器 不在专用网络内运行 如果用户尝试登录 如果未启用 SSL 应用程序服务器在查找用户密码
  • 使用绑定变量动态传递表名和列名

    有没有办法使用绑定变量将列名和表名动态传递给查询 这可以通过使用简单的串联运算符来完成 但我想要一种不同的方法来实现这一目标 EDIT OPEN abc cur FOR Select column name from table name
  • Oracle 函数编译成功,但在执行 PLS-00221 时抛出错误:不是过程或未定义

    我有简单的oracle功能 create or replace function abs test func test in in number return number is test out number BEGIN test out
  • 在 Sequelize 中添加带有起始值的自动递增整数

    经过一些研究 我似乎无法找到执行以下操作的好方法 我不想向现有表添加新列 该列应该是一个自动递增整数 从值 1000 开始 我的迁移文件现在简单明了 use strict module exports up queryInterface S
  • 排除任何字段中具有 NULL 值的行结果?

    我有一个像这样的简单选择 SELECT FROM table WHERE fk id 10020 它可以工作 但有一些字段为 NULL 没有模式所以做了 SELECT FROM table WHERE fk id 10020 AND NOT
  • SQL Server到Mysql迁移(使用Mysql Workbench)数据传输错误

    我正在使用 Mysql Work bench 6 3 将数据库从 MS Sql server 2008 迁移到 Mysql 在 批量数据传输 期间出错并出现以下警告 这种情况仅发生在像 varchar char 这样的列类型上 当我尝试使用
  • 我应该如何优化 .net 代码中对一个简单存储过程的多次调用?

    我有一个非常简单的存储过程 create procedure spFoo v varchar 50 as insert into tbFoo select v 我有 50 个值要插入到 tbFoo 中 这意味着在我的 c 代码中我调用 sp
  • PostgreSQL - 返回多列的函数

    这是一个提供 2 列结果的函数 在这个函数中有一个Loop被用来返回结果 功能 Create Type Repeat rs as label text count bigint CREATE OR REPLACE FUNCTION Repe
  • LINQ-to-SQL 是否支持组合查询?

    作为一名不懂 C 的程序员 我对 LINQ 查询的求值语义很好奇 如下所示 var people from p in Person where p age lt 18 select p var otherPeople from p in p
  • 对 SQL Server 2005 结果进行分页

    如何在 SQL Server 2005 中对结果进行分页 我在 SQL Server 2000 中尝试过 但没有可靠的方法来做到这一点 我现在想知道SQL Server 2005是否有任何内置方法 分页的意思是 例如 如果我按用户名列出用户
  • 如何在 SQL 中编写 where 子句来按一天中的时间过滤 DATETIME 列?

    我有带有 DATETIME 列时间戳的数据 我想将其过滤到 DATETIME 介于上午 9 30 到下午 5 30 之间的任意一天的记录集 最好的方法是什么 更新 更改是因为我需要精确到分钟 而不仅仅是小时 对于那个很抱歉 您始终可以将其编
  • 获取 SQL 表上未使用的唯一值

    我有一个表 其中有一列描述数字 ID 该 ID 对于所有行都是唯一的 但它不是主键 数字 ID 是有限的 假设答案可以是从 1 到 10 SELECT ID FROM TABLE ID 1 2 5 我必须 通过 UI 向用户呈现未使用的值
  • 获取SQL中前2个特殊字符之间的字符

    我有数据在sql 只是要注意 SQL STudio is the IDE like data a 10 b c a 1 b c 我想获取前两个符号之间的数据 Output 10 1 这就是我的方法 SELECT CAST
  • 根据 SQL 查询的集合生成成员的“散点图”结果

    我有一个staff包含工作人员的数据库表 其中user no and user name列 我还有一个 department 包含员工可以加入的部门的表 其中dept no and dept name作为列 因为员工可以是多个部门的成员 所
  • psycopg 错误,列不存在

    我不断收到这个 错误 psycopg2 ProgrammingError 列 someentry 不存在 该错误表明该列someentry不存在时someentry不是列 它只是要输入数据库的值 这是给出错误的代码 cur execute
  • PHP - 查找和比较日期

    你好 我有 foreach 我可以在其中获取数据库中的事件数据 我使用数据库中的日期名称 例如 event date 我需要在一个 div 中比较具有相同日期和输出的操作 例如我有这个事件 活动一 9 月 13 日 活动二 9 月 1 日
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable
  • SQL Server XQuery 返回错误

    我正在 SQL Server 2012 中对 XML 数据类型列执行查询 数据示例如下

随机推荐

  • 使用带有访问“连续表单”的未绑定组合框进行钻取

    必须有一种简单的方法来做到这一点 我遇到一种情况 我使用连续形式列出零件 零件清单包含零件类型 制造商 零件编号和数量等信息 该列表包含零件实例和数量 我可以从部件的实例中查找其他内容 因此显示现有部件没有问题 只需使用联接查询来检索相关记
  • LINQ for Java 工具[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 LINQ for java
  • Android - 获取折线作为图像

    如何获取已在 Google 地图上绘制为图像的折线 只有折线 没有地图布局 我已经在 Google 地图上绘制了折线 我想将折线作为图像获取 所以只显示红线 没有任何地图 https i stack imgur com vUqS3 png
  • xpath:选择父级和过滤子级

    给定一个 xml 块
  • 在表单中设置默认值

    我想在我的表单中设置一个默认值 我正在这样做 但没有成功 builder gt add points hidden array data gt 5000 any Idea 如果您想默认设置某些内容 请将其设置在模型对象上 model new
  • Javascript (ES6) 异步回调执行

    当许多异步函数排队时 它们的回调是顺序执行还是并发执行 它们按顺序运行 即使它们可能以异步方式排队 事件在浏览器的称为 Web API 的多线程区域中触发 触发事件 例如 XHR 请求 后异步地 一个事件循环同步地在 JavaScript
  • 好友模板重载运算符 <<:无法解析的外部符号

    我遇到了错误问题 错误 LNK2019 无法解析的外部符号 class std basic ostream gt cdecl cop4530 operator class rob Stack const 6rob YAAAV basic o
  • 初始化为数组的对象的 XML 序列化

    我的问题可能源于对 XML 序列化的基本误解 但无论如何 我正在尝试序列化一个包含对象的类 该对象是使用 XMLSerializer 类通过数组初始化的 最小的例子 using System using System IO using Sy
  • 实现抽象工厂模式的最佳方法

    考虑以下代码 include
  • SQL 中布尔表达式的求值顺序

    我无法确定 SQL 中布尔谓词的求值顺序 考虑我们 想象的 汽车数据库的以下选择谓词 WHERE make Honda AND model Accord OR make VW AND model Golf 我知道 AND 优先于 OR 但是
  • JUnit 中的 Objectify 错误“您无法为具有 null @Id 的对象创建密钥”

    我在 JUnit 中测试一段简单的代码 创建一个User对象 一个 Objectify 实体 然后尝试将其作为父级附加到另一个名为的 Objectify 实体DownloadTask java lang IllegalArgumentExc
  • 如何更改 Enter 键是运行代码还是接受 Chrome Devtools 控制台中的自动完成建议?

    When I type into console and there is a list of suggestions if I press Enter then the first option is selected I want pr
  • 拦截 Firefox Addon SDK 中的新下载

    我为 Windows 编写了一个简单的下载管理器 我想为 Firefox 创建一个插件 启用后会拦截 Firefox 中的新下载并将它们发送到下载管理器 我已经这样做了谷歌浏览器 using chrome downloads onCreat
  • 如何在jsp中显示表格中的值?

    我是 jsp 和 jstl 的新手 我正在编写此代码 以使用 for 循环从数组中获取值 我正在获取输出 但我想将该输出放入表中 有人可以帮助我吗 for int i 0 i lt timeSize i out println resour
  • 在 C# 中检索 RETURN @@IDENTITY 的值

    这是一个非常简单的问题 我有一个 SP 它向表中插入一行 最后有语句 RETURN IDENTITY 我似乎找不到在 C 中检索该值的方法 我正在使用 Enterprise 库并使用以下方法 db ExecuteNonQuery cmd 我
  • 如何在DrawingImage/DrawingContext中绘制不模糊的线?

    看图片 我希望中间的线是一条清晰的 1 像素线 您可以将示例标记复制并粘贴到kaxaml 替代文本 http img832 imageshack us img832 1704 lines png
  • GetDIBits 并使用 X、Y 循环遍历像素

    我抓住屏幕的一部分并扫描像素以获得特定的颜色范围 我在看MSDN 的捕获图像示例并了解如何使用这些功能 我可以将这些位放入数组中 但我不确定如何以可以像处理图像一样循环遍历它的方式进行操作 一个伪示例 我确信这是很遥远的 for x 1 x
  • JTextArea txt; txt.getText() 跳过“\n”

    我在 TextArea 中有一些文本 我想将其保存在文件中 我的代码在这里 private void SaveFile try String content txt getText File file new File filename i
  • Windows Phone 8 中的自定义字体

    我尝试将自定义字体添加到我的应用程序中 我需要它作为页面标题 我将字体复制到名为 Fonts 的文件夹中 并将构建操作更改为内容 在属性面板中 字体显示在字体列表中 但是当我添加字体时 页面标题不会改变 它改变了一点 但不像我使用的字体 奇
  • postgresql中两个日期之间的差异

    功能 CREATE FUNCTION diff d1 date d2 date RETURNS int AS BEGIN IF d1 NULL THEN RETURN SELECT extract year from age current