当前位置: 首页 > news >正文

数据库管理-根据日期字段进行数据筛选更新数据

项目场景

数据插入、更新、查询

数据库中一张审计表格用来记录数据的操作包括数据的id,数据名称sjmc,数据状态sjzt,数据创建时间createtime,数据更新时间updatetime

具体需求如下:

  • 根据数据名称更新sjztupdatetime
  • 根据更新时间选取数据修改sjzt。

环境介绍

  • PostgreSQL
  • 瀚高数据库(HighgoDB)

问题描述及方法

根据时间查询

  • 1. 数据库中有一个审计表格audit,表格内更新时间updatetime(数据类型为timestamp),现在我想根据时间进行筛选

SELECT *
FROM audit
WHERE DATE(updatetime) = CURRENT_DATE;#或者SELECT *
FROM audit
WHERE DATE(updatetime) = '2024-11-19';#可以利用当天的起始时间(00:00:00)到结束时间(23:59:59)来确定一个时间范围,
SELECT *
FROM audit
WHERE updatetime BETWEEN CURRENT_DATE::timestamp AND (CURRENT_DATE + INTERVAL '1 DAY')::timestamp - INTERVAL '1 SECOND';
  • DATE(updatetime) 会从 updatetime 列的每个 timestamp 值中提取出日期部分,比如 2024-11-19 10:30:00 这样的时间戳,会提取出 2024-11-19 这一日期值。
  • CURRENT_DATE 是一个获取当前日期(不含时间部分)的函数,例如在 2024 年 11 月 19 日执行查询时,它就代表 2024-11-19 。
  • CURRENT_DATE::timestamp 将当前日期转换为 timestamp 类型,实际上就是当天的起始时间点,例如 2024-11-19 00:00:00 。
  • (CURRENT_DATE + INTERVAL ‘1 DAY’)::timestamp - INTERVAL ‘1 SECOND’ 先将当前日期加一天,然后转换为 timestamp 类型,再减去 1 秒,相当于获取到了当天最后时刻(2024-11-19 23:59:59),整体 BETWEEN 操作符就筛选出了 updatetime 列值在这个当天时间范围内的所有行。
  • WHERE 子句则是筛选出 updatetime 列日期部分等于当前日期的所有行记录。
  • 2. 选择updatetime 列的值与当前日期和指定时间(16:07)的数据
SELECT *
FROM audit
WHERE updatetime = CURRENT_DATE::timestamp + '16:07'::time;# 使用 DATE_TRUNC() 函数结合时间比较(按分钟截断)
SELECT *
FROM audit
WHERE DATE_TRUNC('minute', updatetime) = '2024-10-10 16:07:00'::timestamp;
  • CURRENT_DATE::timestamp 首先获取当前日期,并将其转换为 timestamp 类型,这相当于得到了当天的起始时间点,例如在 2024 年 11 月 19 日执行查询时,就会得到 2024-11-19 00:00:00 这样的时间戳值。
  • ‘16:07’::time 是将字符串表示的时间 16:07 转换为 time 类型。
  • 通过加法操作将两者合并,就构造出了代表当天 16:07 这个具体时刻的时间戳(例如 2024-11-19 16:07:00 ),WHERE 子句利用这个构造好的时间戳去筛选出 updatetime 列与之完全相等的行记录。
  • ‘2024-10-10 16:07:00’::timestamp 这个表达式是将字符串形式表示的时间 2024-10-10 16:07:00 转换为 timestamp 类型,以便可以和 updatetime 列中同样是 timestamp 类型的值进行比较。
  • DATE_TRUNC(‘minute’, updatetime) 会按照分钟对 updatetime 列中的每个时间戳值进行截断操作,例如对于 2024-10-10 16:07:30 这样的时间戳,经过该函数处理后就会变为 2024-10-10 16:07:00 ,也就是舍去秒等更细的时间部分,只保留到分钟精度。
  • 3.根据选取2024-10-10 16:07左右5分钟的数据
##可以使用获取以 2024-10-10 16:07 为中心,前后几分钟的数据,可以使用 BETWEEN 操作符结合时间的运算来实现SELECT *
FROM audit
WHERE updatetime BETWEEN ('2024-10-10 16:07:00'::timestamp - INTERVAL '5 minutes')AND ('2024-10-10 16:07:00'::timestamp + INTERVAL '5 minutes');##按照秒范围来选取(包含 16:07 前后30秒的数据)                      
SELECT *
FROM audit
WHERE updatetime BETWEEN ('2024-10-10 16:07:00'::timestamp - INTERVAL '30 seconds')AND ('2024-10-10 16:07:00'::timestamp + INTERVAL '30 seconds');#获取以 2024-10-10 16:07 为中心,前后各 2 小时这个时间区间内的数据
SELECT *
FROM audit
WHERE updatetime BETWEEN ('2024-10-10 16:07:00'::timestamp - INTERVAL '2 hours')AND ('2024-10-10 16:07:00'::timestamp + INTERVAL '2 hours');##使用比较运算符(>、<、>=、<=)组合(适用于更灵活的区间界定,比如不包含边界值等情况)
SELECT *
FROM audit
WHERE updatetime >= ('2024-10-10 16:07:00'::timestamp - INTERVAL '2 hours')AND updatetime <= ('2024-10-10 16:07:00'::timestamp + INTERVAL '2 hours');
  • ‘2024-10-10 16:07:00’::timestamp 先将字符串形式表示的时间 2024-10-10 16:07:00 转换为 timestamp 类型,代表 2024-10-10 16:07 这个时刻的时间戳。
  • INTERVAL ‘5 minutes’ 表示一个时间间隔为 5 分钟,通过减法和加法运算,分别得到了这个时刻往前推 5 分钟(2024-10-10 16:02:00 )和往后推 5 分钟(2024-10-10 16:12:00 )的时间戳。
  • INTERVAL ‘30 seconds’ 表示 30 秒的时间间隔
  • INTERVAL ‘2 hours’ 表示一个时间间隔为 2 小时
  • BETWEEN 操作符则筛选出 updatetime 列中时间戳值处于这两个时间戳所界定的区间(即从 2024-10-10 16:02:00 到 2024-10-10 16:12:00 )内的所有行记录。

  • 4.插入数据时,当 id 已经存在就跳过插入操作,继续执行后面的语句,可以使用 ON CONFLICT 子句来实现

INSERT INTO tab_sjly("id", "sjmc")
VALUES('1c879377-991f-4b67-a78a-8bc0dd804657', 'XZQ_shi'),('e7a2ddec-775b-40b3-88db-331f60fb3931', 'XZQ_地级市行政中心'),('0749e643-b636-4ee3-960f-30c647a09b36', 'a_gsjyrk')
ON CONFLICT ("id") DO NOTHING;
  • ON CONFLICT (“id”) 这部分表示当插入的数据在 “id” 列出现冲突时(也就是要插入的 id 值在表中已经存在了),进行后续的指定操作。
  • DO NOTHING 就是指定的操作,表示在遇到 id 冲突的情况下,什么都不做,直接跳过当前这条插入语句对应的插入行为,然后继续执行后面的插入语句或者其他相关的后续语句(如果有的话)。

小结

  1. 使用 BETWEEN 操作符(适用于包含边界值的区间查询)
  2. 只查询大于起始时间且小于结束时间的数据(不包含边界值),查询大于等于起始时间且小于等于结束时间的数据(包含边界值):使用比较运算符(>、<、>=、<=)组合(适用于更灵活的区间界定,比如不包含边界值等情况)。
  3. 使用 DATE_TRUNC() 函数结合时间区间查询(常用于按照特定时间精度来界定区间,比如按天、按小时等)
  4. ON CONFLICT (“id”) DO NOTHING 用于解决已经插入的数据受到键值约束插入失败的问题。

相关文章:

数据库管理-根据日期字段进行数据筛选更新数据

项目场景 数据插入、更新、查询 数据库中一张审计表格用来记录数据的操作包括数据的id&#xff0c;数据名称sjmc&#xff0c;数据状态sjzt&#xff0c;数据创建时间createtime&#xff0c;数据更新时间updatetime。 具体需求如下&#xff1a; 根据数据名称更新sjzt和update…...

03. 运算符

一、运算符与表达式 运算符 就是对字面量或者变量进行操作的符号&#xff1b;表达式 是指用运算符把字面量或者变量连接起来&#xff0c;符合 Python 语法的式子。不同运算符连接的表达式体现的是不同类型的表达式&#xff1b;Python 中的运算符主要包括 算术运算符、赋值运算符…...

【最优清零方案——贪心+滑动窗口+线段树】

题目 代码 #include <bits/stdc.h> using namespace std; using ll long long; const int N 1e6 10; int a[N]; struct node {int l, r;int m, p, lazy; } tr[4 * N]; void pushup(node &u, node &l, node &r) {if (l.m r.m){u.m l.m;u.p max(l.p, r.…...

一个点绕任意点旋转后的点的坐标

在平面坐标上&#xff0c;任意点P(x1,y1)&#xff0c;绕一个坐标点Q(x2,y2)逆时针旋转θ角度后,新的坐标设为(x, y)的计算公式&#xff1a; x (x1 - x2)*cos(θ) - (y1 - y2)*sin(θ) x2 ; y (x1 - x2)*sin(θ) (y1 - y2)*cos(θ) y2 ; 另一个场景应用&#xff0c;坐标轴绕…...

大数据面试题每日练习--HDFS是如何工作的?

HDFS&#xff08;Hadoop Distributed File System&#xff09;是一个分布式文件系统&#xff0c;设计用于存储非常大的文件。它的主要工作原理如下&#xff1a; NameNode&#xff1a;管理文件系统的命名空间&#xff0c;维护文件目录树和文件元数据信息。NameNode记录每个文件…...

Python的3D可视化库 - vedo (2)visual子模块 基本可视化行为

文章目录 1. visual模块的继承关系2. 基类CommonVisual的方法2.1 获取对象信息2.1.1 对象本身信息2.1.2 对象的查找表2.1.3 对象标量范围2.1.4 对象缩略图 2.2 呈现对象2.2.1 在窗口显示1.2.2 对象可见性 2.2.3 对象颜色2.2.4 对象透明度 2.3 添加标度条2.3.1 2D标度条2.3.2 3D…...

Java AIO(NIO.2)

Java AIO&#xff08;Asynchronous I/O&#xff0c;异步I/O&#xff09;&#xff0c;也被称为NIO.2&#xff0c;是Java平台提供的一种处理异步输入/输出操作的机制。作为Java NIO&#xff08;New I/O&#xff09;的扩展&#xff0c;AIO引入了一些新的API和特性&#xff0c;旨在…...

Flink 常用问题及常用配置(有用)

一、Flink 常用问题及常用配置 参数 示例 说明 execution.checkpointing.interval 3min Checkpoint 触发间隔 state.backend rocksdb / filesystem 用于设置statebackend类型, 默认会以内存为statebackend(无法支持大状态) taskmanager.memory.jvm-overhead.max 204…...

RocketMQ: 消息过滤,通信组件,服务发现

消息过滤 1 ) 简单消息过滤 /*** 订阅指定topic下tags分别等于 TagA 或 TagC 或 TagD */consumer.subscribe("TopicTest1", "TagA || TagC || TagD");如以上代码所示&#xff0c;简单消息过滤通过指定多个 Tag 来过滤消息&#xff0c;过滤的动作在服务器进…...

linux ubuntu的脚本知

目录 一、变量的引用 二、判断指定的文件是否存在 三、判断目录是否存在 四、判断最近一次命令执行是否成功 五、一些比较符号 六、"文件"的读取和写入 七、echo打印输出 八、ubuntu切换到root用户 N、其它可以参考的网址 脚本功能强大&#xff0c;用起来也…...

HTTP有哪些风险?是怎么解决的?

一、风险 HTTP是通过明文传输的&#xff0c;存在窃听风险、篡改风险以及冒充风险。 二、如何解决 HTTPS在HTTP的下层加了一个SSL/TLS层&#xff0c;保证了安全&#xff0c;通过混合加密解决窃听风险、数字签名解决篡改风险、数字证书解决冒充风险。 &#xff08;1&#xff0…...

3.12MayBeSomeLinearAlgebra

X是M*(D1),XT为&#xff08;D1)*M Ω是一行D1列&#xff0c;X乘以欧米噶是M行D1列 行是说样本个数&#xff0c;列是特征数量 如果是小样本&#xff0c;那么可能会出现特征数量大于样本个数 如果MD*DM就是M*M&#xff0c;...

学习日志015--python单链表

创建 class Node:def __init__(self,data):# 数据域self.data data# 链接域self.next Noneclass LinkList:def __init__(self,):# 初始化头节点self.head None# 记录链表的长度self.size 0 增加 #头插def insert_head(self,value):# 创建新节点node Node(value)q self…...

如何在Windows右键新建菜单中添加自定义项

Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\.py] "Python.File"[HKEY_CLASSES_ROOT\.py\ShellNew] "NullFile"""[HKEY_CLASSES_ROOT\Python.File] "FriendlyTypeName""文本.py"[HKEY_CLASSES_ROOT\Python.Fil…...

Spring Boot 3.0废弃了JavaEE,改用了Jakarta EE

Spring Boot 3.0废弃了JavaEE&#xff0c;改用了Jakarta EE 历史背景 javax变成Jakarta的主要原因是因为Java EE项目从Oracle转移到了Eclipse Foundation&#xff0c;并改名为Jakarta EE。 JavaEE是从Java 1.2版本开始推出的Java企业级开发平台&#xff0c;最初的名称是J2EE(J…...

pdf文档动态插入文字水印,45度角,旋转倾斜,位于文档中央,多行水印可插入中文

一行水印 /*** param inputFile 你的PDF文件地址* param outputFile 添加水印后生成PDF存放的地址* param waterMarkName 你的水印* return*/public static boolean waterMark(String inputFile,String outputFile, String waterMarkName){try {PdfReader reader new PdfRead…...

[ 渗透测试面试篇-2 ] 针对大规模资产的攻击思路

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

深入解析 Web 应用中的 CHIPS(Partitioned Cookie Attribute)

深入解析 Web 应用中的 CHIPS&#xff08;Partitioned Cookie Attribute&#xff09; 最新发现flask3.1.0 的版本引入了新的特性&#xff1a;对CHIPS的支持。不少同学对这个可能有点陌生&#xff0c;本文带大家了解一下。 为了在隐私保护和功能需求之间取得平衡&#xff0c;Goo…...

从搭建uni-app+vue3工程开始

技术栈 uni-app、vue3、typescript、vite、sass、uview-plus、pinia 一、项目搭建 1、创建以 typescript 开发的工程 npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project2、安装sass npm install -D sass// 安装sass-loader&#xff0c;注意需要版本10&#xff0c;…...

归并排序与逆序对问题(C语言版)

一、引言 归并排序是一种高效且稳定的排序方法&#xff0c;而逆序对问题是算法领域的一个经典问题&#xff0c;本文教大家如何实现归并排序&#xff0c;以及如何使用归并排序去结果逆序对问题 二、归并排序 归并排序思想 分解&#xff1a;将待排序的数组分成两半&#xff0c…...

网络爬虫总结与未来方向

通过深入学习和实际操作&#xff0c;网络爬虫技术从基础到进阶得以系统掌握。本节将全面总结关键内容&#xff0c;并结合前沿技术趋势与最新资料&#xff0c;为开发者提供实用性强的深度思考和方案建议。 1. 网络爬虫技术发展趋势 1.1 趋势一&#xff1a;高性能分布式爬虫 随…...

C++ 核心数据结构:Stack 与 Queue 类深度解析

&#x1f31f;快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。 &#x1f31f; 目录 &#x1f4af;前言 &#x1f4af;Stack 类 &#xff08;一&#xff09;Stack 类的概念与特点 &#xff08;二&#x…...

Python枚举类详解:用enum模块高效管理常量数据

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 在编程中,常量的管理是一个关键环节,合理的管理常量可以提高代码的可读性和可维护性。Python的enum模块提供了一种有效的方式来组织常量数据,通过枚举类(Enum)将相关的常量值集合在一起,使代码更具结…...

企业OA管理系统:Spring Boot技术深度探索

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…...

汽车免拆诊断案例 | 2012款路虎揽胜运动版柴油车加速无力

故障现象  一辆2012款路虎揽胜运动版车&#xff0c;搭载3.0T柴油发动机&#xff08;型号为306DT&#xff09;&#xff0c;累计行驶里程约为10.2万km。车主进厂反映&#xff0c;车辆行驶中加速无力&#xff0c;且发动机故障灯异常点亮。 故障诊断 接车后试车&#xff0c;发动…...

uniapp接入高德地图

下面代码兼容安卓APP和H5 高德地图官网&#xff1a;我的应用 | 高德控制台 &#xff0c;绑定服务选择《Web端(JS API)》 /utils/map.js 需要设置你自己的key和安全密钥 export function myAMap() {return new Promise(function(resolve, reject) {if (typeof window.onLoadM…...

(UI自动化测试)web自动化测试

web自动化测试 UI自动化测试介绍 自动化测试理论&#xff1a; 图片上的文字等等不能做测试&#xff0c;只能发现固定的bug 工具选择及介绍 浏览器驱动&#xff1a;找元素--核心&#xff1a;驱动&#xff08;操作元素&#xff09;--通过代码...

【es6进阶】如何使用Proxy实现自己的观察者模式

观察者模式&#xff08;Observer mode&#xff09;指的是函数自动观察数据对象&#xff0c;一旦对象有变化&#xff0c;函数就会自动执行。这里&#xff0c;我们是使用es6的proxy及reflect来实现这个效果。 实现效果 业务分析 源数据 const object2 {name: "张三"…...

住宅IP怎么在指纹浏览器设置运营矩阵账号

矩阵账号的运营已经成为了许多企业和个人推广策略中的重要一环。通过构建和管理多个社交媒体或电商平台的账号&#xff0c;可以有效地扩大品牌影响力&#xff0c;提高市场覆盖率。然而&#xff0c;随着平台对账号关联的限制越来越严格&#xff0c;如何安全、有效地运营这些矩阵…...

表格数据处理中大语言模型的微调优化策略研究

论文地址 Research on Fine-Tuning Optimization Strategies for Large Language Models in Tabular Data Processing 论文主要内容 这篇论文的主要内容是研究大型语言模型&#xff08;LLMs&#xff09;在处理表格数据时的微调优化策略。具体来说&#xff0c;论文探讨了以下…...