函数内的时间戳比较

2024-02-21

为了防止旧版本覆盖新版本,在这个简单的函数中:

create function myupdate(paramts timestamp without time zone, ...)
  language plpgsql AS
$$
begin
-- step 1 compare current record timestamp vs. supplied timestamp
if exists (select 1 from record where ts <> paramts and ...) then
    raise exception 'A newer version exists, cannot update.';
end if;
...
end
$$;

ts定义是一样的timestamp without time zone.

paramts值由函数提供:

create function myfetch(...)
  language plpgsql AS
$$
begin
    return query select ts, ... from record where ...;
end
$$;

Node API 和 Angular 客户端 UI 得到的是2021-04-16T21:37:35.878Z提交给的值也是如此myupdate()。然而,在我们的西海岸服务器之一上,在执行期间myupdate(), ts自动转换为 PST2021-04-16 14:37:35.878694右边多了 3 位数字。

如何比较 UTC 和相同精度?


你应该使用timestamptz (timestamp with time zone)代替timestamp (timestamp without time zone)以避免任何时区混淆。在餐桌上,在功能上,在整个食物链中。然后,值始终在内部存储为 UTC 时间,并且比较会自动正确进行(比较独立于时区的时间点)。

See:

  • 在 Rails 和 PostgreSQL 中完全忽略时区 https://stackoverflow.com/questions/9571392/ignoring-time-zones-altogether-in-rails-and-postgresql/9576170#9576170

无论哪种方式,两种类型都有微秒分辨率,即6派系十进制数字。您的第一个示例以某种方式被截断,可能是由您的客户端在显示中截断的。

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

函数内的时间戳比较 的相关文章

随机推荐

  • 如何在 wiki api 中获取图像 URL?

    当我调用 wiki API 来访问图像 URL 时 我得到这样的图像 URL File Ad tech London 2010 2 JPG 如何从 wiki API 获取该文件的正确 URL 除此之外 关于图像 缩略图 URL 的文档很少T
  • 如何定义 Apache Airflow DAG 的超时?

    我使用的是 Airflow 1 10 2 但 Airflow 似乎忽略了我为 DAG 设置的超时 我正在使用以下命令为 DAG 设置超时期限dagrun timeout参数 例如 20 秒 我有一个需要 2 分钟才能运行的任务 但 Airf
  • 在php中与google的搜索api通信时启动参数的最大值是多少?

    这是我的代码 function doGoogleSearch searchTerm start endpoint web key url http ajax googleapis com ajax services search endpo
  • 使用 Java SE 功能的 BlackBerry 问题

    我已将 net rim api jar 导入到我的项目中 我还想使用标准 rt jar 中的 StringTokenizer 和 PrintWriter 等非 j2me 类 但是当我运行该应用程序时 它给出了错误 java io UTFDa
  • 将excel的特定列读取到java程序中

    我需要读取 Excel 工作表的特定列 然后在 java 中声明变量 我所做的程序读取Excel工作表的全部内容 但我需要读像C这样的固定专栏 这就是我所做的 import java io File import java io IOExc
  • 有没有办法让字典键成为范围?

    如果这很明显 请原谅我 但我对 Python 非常非常陌生 我已经找到了从字典中获取多个键的方法 但这不是我想要做的 基本上我正在寻找这样的东西 my dict 1 10 foo 11 20 bar 91 100 baz 但其中的键实际上不
  • 需要一段JS代码来多次使用不同的值和函数名称。如何高效地做到这一点?

    我有一个像这样的脚本 div div 我还想要 8 块 不同的foo bar and string The otherConfigs 不变 我可以简单地复制
  • SwiftUI 中的多行可编辑文本字段

    我正在寻找在 macOS 的 Swift UI 中创建一个可编辑的多行文本框 我想创建一个语法突出显示文本编辑器 因此它是多行的 并可以更改各行的样式 在当前状态下 这可能吗 我在网上几乎找不到任何有关它的文档 它可能很有用 这是我使用 S
  • SugarCRM - 数据库故障 - 行大小太大?

    我一直在为 SugarCRM 构建一个自定义模块 但遇到了一些问题 在安装该模块时 我遇到了 数据库故障 请参阅 Sugarcrm log 了解详细信息 检查日志文件后 我发现错误是这样的 MySQL 错误 1118 行大小太大 所用表类型
  • 使用Javascript连接SQL Server数据库

    我需要使用 Javascript 从 SQl Server 2008 数据库读取一些数据 所以我写了这个 html页面代码
  • Android SDK Mediaplayer.create随机返回null

    我遇到一个问题 即使音频文件确实存在 MediaPlayer create 方法偶尔也会返回 null 事实上 如果我将 create 调用放入 while 循环中 媒体播放器最终将创建成功 这似乎只发生在我的手机 运行 2 1 的 HTC
  • 在命令行上检查音频文件的持续时间

    我需要检查一组音频文件的持续时间 有没有一种简单的方法可以在 unix 命令行上执行此操作 gt duration 我有一个令人惊叹的 SoX 应用程序 它有一个名为 统计 的选项 可以生成一组包括持续时间的音频信息 我正在寻找一种只获得持
  • 记住在单选 AlertDialog 中选择的内容

    我有一个AlertDialog它将数组显示为单个选定的选项 protected boolean blFrom blTo protected void showSelectToDialog boolean checkedDate new bo
  • 如何使用按行分列来获取频率计数?

    我有一个数据框 用于跟踪个人 x Bob 在感兴趣的时间范围 1900 1999 年 内的服务参与情况 srvc inv 1 0 library tidyverse dat lt data frame name rep Bob 100 da
  • 有工作要做时挂起并通知线程

    我有多个线程 在 IIS 上运行的 C 应用程序 正在运行 所有线程都需要与同一个 MQ 后端进行通信 为了最大限度地减少网络流量 我只需要在有工作要做时发送后端请求 将有一个线程来监视是否有工作要做 并且它需要通知其他线程它们也应该开始处
  • Mac 上 Boost 的链接器错误 (OSX 10.10.02 | Xcode 6.1.1)

    最近我开始在 Windows 上使用 Boost 来完成一个项目 它需要跨平台 所以我也在Mac上安装了它 很遗憾 每当我将它添加到 Xcode 项目时 它都会给我带来大量链接器错误和转换警告 链接器错误之一的示例 体系结构 x86 64
  • 如何使用 codeigniter cart 类删除单个购物车项目?

    我正在为我的购物车项目使用 codeigniter cart 类 我的购物车中有很多商品 现在我有了购物车行 ID 现在我真正需要做的是 需要从购物车中删除特定的商品 而不是所有内容 销毁购物车 cartcontents this gt c
  • 在 .net 中使用 selenium 2.0 Web 驱动程序的示例/教程?

    有没有使用 selenium 2 0 Web 驱动程序与 net 的教程 示例 我尝试过搜索 但只能找到 java 没有找到有关 net 和 selenium 2 0 Web 驱动程序的信息 这里的文档有一个 C 示例 http selen
  • 使用 OpenPGP 子项签名提交失败

    我想使用我的 GPS 2 子项之一在 Git 中签署提交 标签 即 我新创建的 RSA4096 仅签名密钥 其长 ID B0 sec ed25519 9F 2016 01 07 expires 2023 01 05 Key fingerpr
  • 函数内的时间戳比较

    为了防止旧版本覆盖新版本 在这个简单的函数中 create function myupdate paramts timestamp without time zone language plpgsql AS begin step 1 com