Oracle用BETWEEN AND查某年的数据可能会丢失条数

news/2024/6/19 5:54:51 标签: sql, oracle

随便找一张有日期(字段类型为DATE)的表即可测试。

假设存在这样一张表HOLIDAY,里面存储的是某些国家(表字段为COUNTRY_CODE)某些年的法定假日日期(表字段为HOLIDAY_DATE)。

我想查中国在2023年和2024年的法定假日日期。

BETWEEN AND

首先想到的是BETWEEN AND:

sql">-- BETWEEN AND查年份不精确
SELECT * FROM HOLIDAY WHERE COUNTRY_CODE = 'cn' AND HOLIDAY_DATE BETWEEN TO_DATE('2023','yyyy') AND TO_DATE('2024','yyyy');

根据查询结果来看,AND TO_DATE(‘2024’,‘yyyy’)只能查到2024-01-01,24年只查到一天。

而且对比数据来看,如果在2024-01-15执行上述sql,23年的查询记录在2023-01-15到2023-12-31之间,23年的数据也会丢失一部分。

日期完整性问题

日期存储格式为20240101,包含月日,写查询语句也要包含月日,否则可能丢失条数。

sql">SELECT * FROM HOLIDAY WHERE COUNTRY_CODE = 'cn' AND HOLIDAY_DATE BETWEEN TO_DATE('20230101','yyyyMMdd') AND TO_DATE('20241231','yyyyMMdd');

EXTRACT函数

专门用来截取年、月、日、时、分、秒的函数。

sql">SELECT * FROM HOLIDAY WHERE COUNTRY_CODE = 'cn' AND EXTRACT(YEAR FROM HOLIDAY_DATE) IN('2023','2024');

http://www.niftyadmin.cn/n/5374812.html

相关文章

IM聊天系统为什么需要做消息幂等?如何使用Redis以及Lua脚本做消息幂等【第12期】

0前言 消息收发模型 第一张图是一个时序图,第二张图是一个标清楚步骤的流程图,更加清晰。消息的插入环节主要在2步。save部分。主要也是对这个部分就行消息幂等的操作。 前情提要:使用Redis发布 token 以及lua脚本来共同完成消息的幂等 目…

Go+:一种简单而强大的编程语言

Go是一种简单而强大的编程语言,它是在Go语言之上构建的,旨在提供更加强大、灵活和易于使用的编程体验。Go与Go语言共享大部分语法和语义,因此Go开发人员可以很快上手Go,同时也可以使用Go来编写更加简洁和高效的代码。在本文中&…

王树森《RNN Transformer》系列公开课

本课程主要介绍NLP相关,包括RNN、LSTM、Attention、Transformer、BERT等模型,以及情感识别、文本生成、机器翻译等应用 ShusenWang的个人空间-ShusenWang个人主页-哔哩哔哩视频 (bilibili.com) (一)NLP基础 1、数据处理基础 数…

力扣_面试题:配对交换

配对交换 链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目意思就是交换相邻两个二进制位 ,用&分别取出even(偶位和)odd(奇位和) 偶位和用0xAAAAAAAA,奇…

RK3568笔记十二:Zlmedia拉流显示测试

若该文为原创文章,转载请注明原文出处。 Zlmediakit功能很强大,测试一下拉流,在通过解码显示。 一、环境 1、平台:rk3568 2、开发板:ATK-RK3568正点原子板子 3、环境:buildroot 测试的代码在GitHub - airockchip/…

嵌入式Qt 第一个Qt项目

一.创建Qt项目 打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项 弹出New Project对话框,选择Qt Widgets Application 选择【Choose】按钮,弹出如下对话框 设置项目名称和路径,按照向导进行下一步 选…

如何用 docker 部署程序?

如何用 docker 部署程序?这个问题有点笼统。 如果是MySQL、Redis这些,只需要拉取镜像,然后设置必要的配置,最终创建并运行实例即可。 如果你的应用是一个Java应用程序,使用Docker来部署它会涉及到Java特有的一些考虑…

一个Spring Boot Admin 监控多个Nacos集群

背景 我们有多个系统,每个系统一个集群,每个集群都部署了自己的Spring Boot Admin(以下简称Admin),用起来不仅不方便,私有化部署的时候还得多部署几个服务,为了解决这个问题,我想到…