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

Oracle 数字区间、日期边界问题分类总结(日期比较大小)

Oracle中不同函数对数字区间的处理方式不同FOR循环闭区间[m,n]包含结束值如1..3包含3SUBSTR从起始位置开始截取指定长度字符非结束位置特殊规则0视为第1位负数表示从末尾倒数INSTR返回子串出现的位置从1计数其他函数ROUND/TRUNC处理小数位MOD取余数POWER计算幂次关键区别FOR循环关注起止值包含性SUBSTR关注起始位置和长度INSTR返回位置索引日期处理BETWEEN对日期包含结束日00:00:00不包含时间部分推荐使用开始 AND 结束日1的方式确保包含完整时间段TRUNC函数去除时间部分LAST_DAY获取月末时间段查询应使用不等号确保边界完整关键区别数字区间关注起止值包含性日期处理需特别注意时间部分的边界问题。 Oracle 数字区间问题分类总结功能/函数语法起始位置是否包含结束位置边界规则说明示例结果FOR 循环FOR i IN m..n LOOP从 m 开始✅包含 n闭区间[m, n]i 会取到 nFOR i IN 1..3 LOOPi 1,2,3SUBSTR 截取SUBSTR(str, m, n)从第 m 位开始✅包含截取n 个字符不是到第 n 位SUBSTR(ABCDE, 2, 3)BCD位置2,3,4SUBSTR 简写SUBSTR(str, m)从第 m 位开始✅包含截取到字符串末尾SUBSTR(ABCDE, 3)CDEINSTR 查找INSTR(str, sub, m, n)从第 m 位开始搜索N/A返回值是位置返回第 n 次出现的位置从1计数INSTR(ABABA, B, 1, 2)4第2个B的位置ROUND 四舍五入ROUND(num, m)第 m 位小数N/A不是区间问题m 为正小数点后m 为负小数点前ROUND(123.456, 1)123.5TRUNC 截断TRUNC(num, m)第 m 位小数N/A不是区间问题直接截断不四舍五入TRUNC(123.456, 1)123.4MOD 取模MOD(m, n)N/AN/A返回 m 除以 n 的余数MOD(10, 3)1POWER 幂运算POWER(m, n)N/AN/A返回 m 的 n 次方POWER(2, 3)8 容易混淆的重点对比1️⃣ FOR 循环 vs SUBSTR 的结束概念对比项FOR 循环SUBSTR区间类型位置区间[m, n]长度区间从 m 开始取 n 个参数含义结束值截取长度是否包含包含结束值包含起始位置取 n 个字符sql-- FOR 循环包含 5 FOR i IN 1..5 LOOP -- i 1,2,3,4,5 -- SUBSTR第2个参数是长度不是结束位置 SUBSTR(ABCDE, 2, 3) -- 从位置2开始取3个 → BCD位置2,3,42️⃣ SUBSTR 的起始位置规则特殊起始位置行为示例字符串ABCDE结果0视为第 1 位SUBSTR(ABCDE, 0, 2)AB1正常从第 1 位开始SUBSTR(ABCDE, 1, 2)AB正数 n从第 n 位开始SUBSTR(ABCDE, 3, 2)CD负数 n从末尾倒数第 n 位开始SUBSTR(ABCDE, -2, 2)DE3️⃣ INSTR 的位置返回值sql-- INSTR 返回的是位置编号从1开始 INSTR(ABCDE, C) -- 返回 3 INSTR(ABABA, B, 1, 2) -- 从位置1开始找第2个B → 返回 4✅ 快速记忆口诀场景口诀FOR 循环两点之间两头都算SUBSTR起始位置 取几个不是到哪INSTR找到后告诉你它在第几个位置负数索引SUBSTR 倒数开始INSTR 不动示例--练习 -- 1,开发函数 ELIM函数 实现功能 ELIM(ABBBBBCD,B) 返回 -- ELIM(ABBBBCD,B) -- 干掉 第一次出现 第二个入参的内容 -- ELIM(A-B-C,-)返回 AB-C create or replace function ELIM(str varchar2,s varchar2) return varchar2 is v_res varchar2(100); v_start number; begin if instr(str,s)0 then return str; else v_start:instr(str,s,1,1); --拼接字符串 v_res:substr(str,1,v_start-1)||substr(str,v_start1); dbms_output.put_line(v_res); return v_res; end if; end; --单独执行 select 不要选中 自定义的函数 一起执行 select ELIM(A-B-C,-)as ELIM from dual; Oracle 日期边界问题分类总结一、BETWEEN...AND 的日期边界场景语法示例是否包含结束日期实际等价条件说明日期类型无时间WHERE date_col BETWEEN DATE 2024-01-01 AND DATE 2024-01-31✅包含date_col DATE 2024-01-01 AND date_col DATE 2024-01-31包含结束日期当天 00:00:00日期类型有时间WHERE date_col BETWEEN DATE 2024-01-01 AND DATE 2024-01-31⚠️不包含31日的时间部分实际只到2024-01-31 00:00:00常见陷阱2024-01-31 14:30:00不会被查到时间戳类型WHERE ts_col BETWEEN TIMESTAMP 2024-01-01 00:00:00 AND TIMESTAMP 2024-01-31 23:59:59✅完全包含明确指定了时间边界需要精确到秒或毫秒二、常见的日期边界处理方式需求场景错误写法陷阱正确写法说明查询某一天的数据WHERE date_col DATE 2024-01-31WHERE date_col DATE 2024-01-31 AND date_col DATE 2024-02-01等于只查当天 00:00:00漏掉有时间的数据BETWEEN 查整月WHERE date_col BETWEEN DATE 2024-01-01 AND DATE 2024-01-31WHERE date_col DATE 2024-01-01 AND date_col DATE 2024-02-01BETWEEN 不包含1月31日的时间部分查询本月至今WHERE date_col BETWEEN TRUNC(SYSDATE, MM) AND SYSDATEWHERE date_col TRUNC(SYSDATE, MM) AND date_col SYSDATE 1BETWEEN 可能漏掉今天的部分时间三、日期函数边界规则函数语法边界规则示例以 2024-01-31 14:30:45 为例结果TRUNCTRUNC(date, unit)截断到指定单位的开始TRUNC(SYSDATE, MM)2024-01-01 00:00:00TRUNCTRUNC(date, DD)截断到当天的开始TRUNC(SYSDATE)2024-01-31 00:00:00LAST_DAYLAST_DAY(date)返回月份最后一天的 00:00:00LAST_DAY(DATE 2024-01-31)2024-01-31 00:00:00ADD_MONTHSADD_MONTHS(date, n)月份边界自动处理ADD_MONTHS(DATE 2024-01-31, 1)2024-02-29 00:00:00闰年NEXT_DAYNEXT_DAY(date, weekday)返回下一个指定星期几NEXT_DAY(DATE 2024-01-31, MONDAY)下一个周一 00:00:00四、常见的时间段区间写法最佳实践时间段包含边界写法说明某一天date_col DATE 2024-01-31 AND date_col DATE 2024-02-01✅ 推荐包含当天所有时间某一月date_col DATE 2024-01-01 AND date_col DATE 2024-02-01✅ 推荐包含整月某一小时date_col TIMESTAMP 2024-01-31 14:00:00 AND date_col TIMESTAMP 2024-01-31 15:00:00✅ 包含14:00:00到14:59:59本周date_col TRUNC(SYSDATE, IW) AND date_col TRUNC(SYSDATE, IW) 7周一到周日ISO标准本月date_col TRUNC(SYSDATE, MM) AND date_col ADD_MONTHS(TRUNC(SYSDATE, MM), 1)整月本季度date_col TRUNC(SYSDATE, Q) AND date_col ADD_MONTHS(TRUNC(SYSDATE, Q), 3)整季度本年date_col TRUNC(SYSDATE, YY) AND date_col ADD_MONTHS(TRUNC(SYSDATE, YY), 12)整年五、BETWEEN 与日期使用的具体示例❌ 错误示例常见陷阱sql-- 查询 2024-01-31 的所有订单 SELECT * FROM orders WHERE order_date BETWEEN DATE 2024-01-31 AND DATE 2024-01-31; -- 结果只查出 order_date 2024-01-31 00:00:00 的订单 -- 漏掉2024-01-31 14:30:00 的订单✅ 正确示例sql-- 方法1使用 和 推荐 SELECT * FROM orders WHERE order_date DATE 2024-01-31 AND order_date DATE 2024-02-01; -- 方法2使用 TRUNC但会索引失效 SELECT * FROM orders WHERE TRUNC(order_date) DATE 2024-01-31; -- 方法3精确到秒的 BETWEEN SELECT * FROM orders WHERE order_date BETWEEN TIMESTAMP 2024-01-31 00:00:00 AND TIMESTAMP 2024-01-31 23:59:59;六、日期边界核心要点速查表问题答案BETWEEN 包含结束日期吗✅ 包含但只包含结束日期的00:00:00如何包含某一天的所有时间使用 当天 AND 明天如何包含某一整月使用 当月1号 AND 下月1号DATE 类型有时间部分吗✅ 有Oracle DATE 包含时分秒TRUNC 作用是什么去掉时间部分归零到 00:00:00判断是否同一天TRUNC(date1) TRUNC(date2)✅ 记忆口诀BETWEEN 虽包含只到零点不算妙要查整天用不等大于等于小于明天好月份区间也同理上月1号到下月1号TRUNC 归零去时间比较日期最可靠日期比较大小在 Oracle 中比较日期大小有多种方式取决于你的具体需求。下面整理了几种常见的方法1. 基本比较运算符直接使用,,,,,比较DATE类型sql-- 查询某天之后的记录 SELECT * FROM orders WHERE order_date DATE 2024-01-01; -- 查询某天之前的记录 SELECT * FROM orders WHERE order_date SYSDATE; -- 查询某天当天的记录 SELECT * FROM orders WHERE order_date DATE 2024-03-15; -- 注意DATE 包含时间等于判断需要精确到秒 SELECT * FROM orders WHERE order_date TO_DATE(2024-03-15 14:30:00, YYYY-MM-DD HH24:MI:SS);2. 忽略时间部分只比较日期如果字段包含时间只想比较年月日sql-- 方法1TRUNC 函数 SELECT * FROM orders WHERE TRUNC(order_date) DATE 2024-03-15; -- 方法2TO_CHAR 格式化 SELECT * FROM orders WHERE TO_CHAR(order_date, YYYY-MM-DD) 2024-03-15; -- 方法3日期范围性能较好 SELECT * FROM orders WHERE order_date DATE 2024-03-15 AND order_date DATE 2024-03-16;3. 在查询条件中比较sql-- 获取过去7天的数据 SELECT * FROM orders WHERE order_date SYSDATE - 7; -- 获取本月数据 SELECT * FROM orders WHERE order_date TRUNC(SYSDATE, MM) AND order_date ADD_MONTHS(TRUNC(SYSDATE, MM), 1); -- 获取今年数据 SELECT * FROM orders WHERE EXTRACT(YEAR FROM order_date) EXTRACT(YEAR FROM SYSDATE);4. 在 CASE / DECODE 中比较sqlSELECT order_id, order_date, CASE WHEN order_date SYSDATE THEN Future WHEN order_date TRUNC(SYSDATE) THEN Today ELSE Past END AS status FROM orders;5. 注意事项问题说明建议OracleDATE包含年、月、日、时、分、秒比较必须完全匹配用范围查询或TRUNC索引使用TRUNC(col)会使索引失效用col BETWEEN start AND end时区TIMESTAMP WITH TIME ZONE需转换用CAST或AT TIME ZONE空值任何NULL比较返回UNKNOWN加上IS NULL检查6. 完整示例sql-- 创建测试表 CREATE TABLE test_dates ( id NUMBER, event_date DATE ); INSERT INTO test_dates VALUES (1, DATE 2024-01-15); INSERT INTO test_dates VALUES (2, TO_DATE(2024-03-20 08:30:00, YYYY-MM-DD HH24:MI:SS)); INSERT INTO test_dates VALUES (3, SYSDATE); -- 查询示例 SELECT * FROM test_dates WHERE event_date DATE 2024-02-01; SELECT * FROM test_dates WHERE TRUNC(event_date) DATE 2024-01-15; SELECT * FROM test_dates WHERE event_date BETWEEN DATE 2024-01-01 AND DATE 2024-01-31;

相关文章:

Oracle 数字区间、日期边界问题分类总结(日期比较大小)

Oracle中不同函数对数字区间的处理方式不同:FOR循环:闭区间[m,n],包含结束值(如1..3包含3)SUBSTR:从起始位置开始截取指定长度字符(非结束位置),特殊规则:0视…...

Modbus RTU通信不求人:5分钟搞懂CRC校验,附可直接调用的C语言代码

Modbus RTU通信实战指南:CRC校验原理与即插即用代码解析 在工业自动化领域,Modbus RTU协议因其简单可靠而广泛应用。许多工程师在项目集成时,往往被CRC校验这个"黑盒"环节绊住脚步——要么校验失败导致通信中断,要么被迫…...

基于多模态大模型的智能家居视觉分析:LLM Vision实战指南

1. 项目概述:为你的智能家居装上“眼睛”和“大脑”如果你和我一样,是个智能家居的深度折腾爱好者,那么你一定遇到过这样的场景:家里的摄像头捕捉到了动静,手机收到一条推送——“前门检测到运动”。然后呢&#xff1f…...

(课堂笔记)PL/SQL 循环 自定义函数 存储过程

本文系统梳理了PL/SQL三大核心内容: 循环结构:包括FOR循环(固定次数)、WHILE循环(条件判断)及BREAK/CONTINUE控制语句;自定义函数:强调必须返回值的特性,演示了数值计算和…...

联邦学习如何重塑社交网络?一篇讲透原理、应用与未来

联邦学习如何重塑社交网络?一篇讲透原理、应用与未来 引言 在数据成为核心生产要素的时代,社交网络平台沉淀了海量的用户关系与行为数据,其价值挖掘与隐私保护之间的矛盾日益尖锐。联邦学习(Federated Learning)作为…...

Showdown.js 实战指南:掌握双向 Markdown 转换的 5 大核心技巧

Showdown.js 实战指南:掌握双向 Markdown 转换的 5 大核心技巧 【免费下载链接】showdown A bidirectional Markdown to HTML to Markdown converter written in Javascript 项目地址: https://gitcode.com/gh_mirrors/sh/showdown Showdown.js 是一款强大的…...

ChanlunX缠论插件终极指南:3步实现自动化技术分析,告别手动画线困扰

ChanlunX缠论插件终极指南:3步实现自动化技术分析,告别手动画线困扰 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 还在为复杂的缠论分析而头疼吗?ChanlunX缠论插件是…...

手把手教你用Verilog实现MDIO控制器(附完整VHDL代码对比)

从零构建MDIO控制器:Verilog实现与PHY芯片调试实战 在FPGA与ASIC设计中,以太网PHY管理是每个硬件工程师必须掌握的技能。MDIO(Management Data Input/Output)作为IEEE 802.3标准定义的双线串行接口,承担着配置PHY寄存器…...

教育科技公司利用统一API平台为不同课程适配不同AI模型

教育科技公司利用统一API平台为不同课程适配不同AI模型 在教育科技领域,开发AI互动课程已成为提升学习体验和效率的重要手段。不同的课程内容、学科属性和学习者年龄层,对背后支撑的AI语言模型有着截然不同的要求。例如,面向低龄儿童的启蒙课…...

特斯拉Model 3 CAN总线DBC文件终极指南:从零开始掌握车辆数据解码

特斯拉Model 3 CAN总线DBC文件终极指南:从零开始掌握车辆数据解码 【免费下载链接】model3dbc DBC file for Tesla Model 3 CAN messages 项目地址: https://gitcode.com/gh_mirrors/mo/model3dbc 想象一下,你正驾驶着特斯拉Model 3,突…...

DeFlowSLAM 基于自监督场景运动分解的动态稠密 SLAM

1. 摘要 我们提出了一种新颖的光流表示,它将光流分解为由相机运动引起的静态光流场和由场景中物体运动引起的另一个动态光流场。基于这种表示,我们提出了一种动态 SLAM,称为 DeFlowSLAM,它利用图像中的静态和动态像素来求解相机位…...

如何在浏览器中实现专业级图像处理:OpenCV.js完整指南

如何在浏览器中实现专业级图像处理:OpenCV.js完整指南 【免费下载链接】opencvjs JavaScript Bindings for OpenCV 项目地址: https://gitcode.com/gh_mirrors/op/opencvjs 想在网页中实现人脸识别、图像滤镜或实时视频分析吗?OpenCV.js让这一切成…...

TexTeller公式识别技术深度剖析:从8000万数据训练到生产级部署

TexTeller公式识别技术深度剖析:从8000万数据训练到生产级部署 【免费下载链接】TexTeller TexTeller can convert image to latex formulas (image2latex, latex OCR) with higher accuracy and exhibits superior generalization ability, enabling it to cover m…...

终极游戏光标增强工具:如何让你的鼠标指针在游戏中清晰可见

终极游戏光标增强工具:如何让你的鼠标指针在游戏中清晰可见 【免费下载链接】YoloMouse Game Cursor Changer 项目地址: https://gitcode.com/gh_mirrors/yo/YoloMouse 你是否曾在激烈的游戏对战中因为鼠标光标太小而迷失方向?是否因为光标颜色与…...

为Claude Code配置Taotoken后端实现稳定无感的编程辅助

为Claude Code配置Taotoken后端实现稳定无感的编程辅助 对于日常使用Claude Code作为编程助手的开发者而言,一个稳定、可控的API服务是保证流畅编码体验的基础。直接连接单一服务商可能会遇到服务波动或访问限制,而手动切换不同模型又增加了配置的复杂度…...

自动驾驶 Camera 与 Radar 融合算法与论文总结

1. Cam与Radar融合综述论文1.1. CamRadarObjDetSemSegADSurvey题目:Radar-Camera Fusion for Object Detection and Semantic Segmentation in Autonomous Driving: A Comprehensive Review名称:用于自动驾驶中目标检测和语义分割的雷达相机融合&#xf…...

终极指南:3步让PS3蓝牙控制器在Windows上完美工作

终极指南:3步让PS3蓝牙控制器在Windows上完美工作 【免费下载链接】BthPS3 Windows kernel-mode Bluetooth Profile & Filter Drivers for PS3 peripherals 项目地址: https://gitcode.com/gh_mirrors/bt/BthPS3 你是否曾经试图将PS3控制器连接到Windows…...

linux server中搭建questasim 10.6c ise14.7

1:背景:公司是公用的服务器,这个服务器里面需要额外的shell打开ise。老的项目维护是ise14.7,需要仿真2:在linux下找到ise的目录,Xilinx\14.7\ISE_DS\ISE\bin\nt64\compxlibgui (花了好些时间&am…...

为 Claude Code 配置 Taotoken 作为后端大模型服务

为 Claude Code 配置 Taotoken 作为后端大模型服务 如果你习惯使用 Claude Code 作为编程助手,并且希望它能通过 Taotoken 平台调用多种大模型,那么这篇教程正适合你。Taotoken 提供了与 Anthropic 官方 API 兼容的通道,这意味着你可以将 Cl…...

Windows Batch (.bat) 脚本语法详解:从入门到实战

文章目录一、 引言:什么是 Batch 脚本?二、 创建和运行 Bat 文件三、 基础语法与命令1. 注释2. 命令回显3. 变量4. 控制流:条件判断 (IF)5. 循环 (FOR)6. 跳转 (GOTO)7. 退出 (EXIT)8. 其他常用命令四、 实战示例示例 1: 简单备份脚本示例 2:…...

终极CORS解决方案:gin-contrib/cors中间件完全指南

终极CORS解决方案:gin-contrib/cors中间件完全指南 【免费下载链接】cors Official CORS gins middleware 项目地址: https://gitcode.com/gh_mirrors/cors/cors 跨域资源共享(CORS)是现代Web开发中常见的挑战,而gin-contr…...

告别模拟器:3分钟在Windows上安装安卓应用的终极指南

告别模拟器:3分钟在Windows上安装安卓应用的终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾想过在Windows电脑上直接运行安卓应用&#x…...

终极浏览器资源嗅探指南:猫抓Cat-Catch完整使用教程

终极浏览器资源嗅探指南:猫抓Cat-Catch完整使用教程 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法保存在线视频而烦恼吗&a…...

OpenClaw插件实现聊天工具与Codex开发助手无缝集成

1. 项目概述:在聊天中无缝接入你的本地开发工作流如果你和我一样,日常开发工作流重度依赖像 Codex 这样的智能编码助手,同时又习惯了在 Telegram 或 Discord 的群聊、频道里和团队沟通,那么你很可能面临一个割裂的体验&#xff1a…...

Leptonica源码架构分析:理解2700+函数的设计哲学

Leptonica源码架构分析:理解2700函数的设计哲学 【免费下载链接】leptonica Leptonica is an open source library containing software that is broadly useful for image processing and image analysis applications. The official github repository for Lepton…...

保姆级避坑指南:从零复现Medical SAM Adapter,搞定皮肤、眼底、腹部CT三大医学数据集

医学影像分割实战:Medical SAM Adapter三大数据集复现全流程解析 当Meta的Segment Anything Model(SAM)遇上医学影像分析,会碰撞出怎样的火花?Medical SAM Adapter作为首个将通用分割大模型适配到医学领域的开源解决方…...

Hawk在微服务架构中的应用:分布式系统的认证解决方案

Hawk在微服务架构中的应用:分布式系统的认证解决方案 【免费下载链接】hawk INACTIVE - HTTP Holder-Of-Key Authentication Scheme 项目地址: https://gitcode.com/gh_mirrors/hawk/hawk 在当今快速发展的分布式系统环境中,微服务架构凭借其灵活…...

从科研到产线:锁相放大器(LIA)在光电探测和AFM中的应用实战与选型指南

从科研到产线:锁相放大器在光电探测与AFM中的实战应用与选型策略 在精密测量领域,信噪比往往决定着实验的成败。当信号强度跌至纳伏甚至皮伏量级时,传统放大器的局限性便暴露无遗——它们会平等地放大信号和噪声。这种现象在拉曼光谱实验中尤…...

WCC与QEMU用户模式结合:实现原生二进制翻译和分析的终极指南

WCC与QEMU用户模式结合:实现原生二进制翻译和分析的终极指南 【免费下载链接】wcc The Witchcraft Compiler Collection 项目地址: https://gitcode.com/gh_mirrors/wc/wcc The Witchcraft Compiler Collection(WCC)是一个功能强大的编…...

如何高效控制macOS外接显示器:MonitorControl完整使用指南

如何高效控制macOS外接显示器:MonitorControl完整使用指南 【免费下载链接】MonitorControl 🖥 Control your displays brightness & volume on your Mac as if it was a native Apple Display. Use Apple Keyboard keys or custom shortcuts. Shows…...