使用 Oracle SQL 选择生日在给定范围内的员工

2024-04-08

为了选择两个月之间的生日,其中 FROMDATE 和 TODATE 是准备好的语句中的一些参数,我想了如下:

select
  p.id as person_id,
   ...
   ...
  where e.active = 1
        and extract(month from TODATE) >= extract(month from e.dateOfBirth)
        and extract(month from e.dateOfBirth) >= extract(month from FROMDATE)
        order by extract(month from e.dateOfBirth) DESC,
              extract(day from e.dateOfBirth) DESC

如何改进以适应数天的工作?


在 Oracle 中搜索日期范围的方法不止一种。对于您的场景,我建议您将所有涉及日期的月份和日期元素转换为数字。

select
  p.id as person_id,
   ...
   ...
  where e.active = 1
  and to_number (to_char( e.dateOfBirth, 'MMDD')) 
      between to_number (to_char( FROMDATE, 'MMDD'))
              and to_number (to_char( TODATE, 'MMDD')) 
  order by extract(month from e.dateOfBirth) DESC,
          extract(day from e.dateOfBirth) DESC

这不会使用任何索引e.dateOfBirth柱子。这是否重要取决于您想要运行查询的频率。


@AdeelAnsari 评论:

“我不喜欢 to_char 谓词,以便利用 指数”

什么指数?正常索引dateOfBirth不会有任何用处,因为索引条目将以年份元素开头。所以它不能帮助你找到出生日期的所有记录any12 月 23 日。

基于函数的索引 - 或者在 11g 中,带有索引的虚拟列(基本上是同一件事) - 是对日期列的各个部分进行索引的唯一方法。

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

使用 Oracle SQL 选择生日在给定范围内的员工 的相关文章

随机推荐

  • Docker&Celery - 错误:Pidfile (celerybeat.pid) 已存在

    应用程序包括 姜戈 雷迪斯 芹菜 码头工人 Postgres 在将项目合并到 docker 之前 一切都运行顺利且正常 但是一旦将其移入容器 就开始出现问题 起初它开始得很好 但过了一会儿我确实收到了以下错误 celery beat 1 E
  • Spring Boot 的新遗迹

    最近 我们将一个 tomcat spring 应用程序转换为 spring boot 除了新遗物之外 一切都运行良好 有没有一种方法可以轻松地使用 Spring Boot 项目配置新的遗迹 我不想硬编码 new relic 代理 jar 路
  • 使用 VBA 确定进程 ID

    情况 我有一个宏 需要将击键按顺序发送到两个 Firefox 窗口 不幸的是 两个窗口具有相同的标题 为了处理这个问题 我激活了该窗口 发送了我的击键 然后使用 F6 加载第二个窗口的 URL 然后发送击键 然后使用 F6 将其返回到原始页
  • X86: `movsxd rdx,edx`指令是什么意思?

    我一直在玩intel mpx 发现它添加了某些我无法理解的指令 例如 英特尔格式 movsxd rdx edx I found this https stackoverflow com questions 33268906 how does
  • 为什么没有将 `std::initializer_list` 定义为文字类型?

    这是这个问题的后续 声明 constexprinitializer list 对象是否合法 https stackoverflow com questions 16063123 is it legal to declare a conste
  • Julia 泛型函数类型参数

    我定义了一个函数如下 function approx pi n tot Float64 0 0 for i in 1 n x rand y rand if x 2 y 2 lt 1 tot 1 end end tot n 4 end pri
  • 3D 哪个更快? Perlin 噪声还是 Simplex 噪声?

    好吧 网上有很多 Perlin 噪声和 Simplex 噪声之间的比较 但我真的找不到一个对三个维度进行简单处理时间比较的地方 这是我最感兴趣的 我读过那个流行的PDF http webstaff itn liu se stegu simp
  • DateTime 和 DateTime2 之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 SQL Server datetime2 与 datetime https stackoverflow com questions 1334143 sql server datetime2 vs da
  • 检查可选 Bool 的值

    当我想检查可选布尔值是否为真时 这样做不起作用 var boolean Bool false if boolean 它会导致此错误 可选类型 IvalueBool 不能用作布尔值 测试 nil 反而 我不想检查是否为零 我想检查返回的值是否
  • 如何使用 html5 canvas 将图像覆盖在杯子上

    我是 HTML5 画布新手 我有一个杯子的图像 我将其渲染在画布上 这是杯子的图片 现在我正在尝试渲染另一张图像 我的照片为正常矩形尺寸 上传该图像的设计区域 我怎样才能渲染这个看起来像杯子上的图像的图像 我想得到这样的最终图像 我使用ca
  • 使WCF服务可以通过Internet访问

    我做了一个WCF服务 我希望它的客户端能够从任何地方访问它 我怎样才能做到这一点 细节 我希望它托管在 Windows 中 过程 而不是站点 我正在使用 TCP 绑定 我对网络托管等几乎一无所知 最好不要使用 IIS 我在网上找到了很多建议
  • 为什么要向对象的属性添加单引号[重复]

    这个问题在这里已经有答案了 对于javascript对象 对于它的属性 我通常不会为其添加单引号 我记得如果我在对象的属性中添加单引号 它就会变成 JSON 吗 我对吗 请看这段代码 两个代码都会输出对象的值 请解释一下我是否需要向对象的属
  • 如何在 Spark 中读取和解析 BSON 转储文件?

    我在 HDFS 中有几个 BZ2 Mongo DB BSON 转储需要分析 我正在使用 Spark 2 0 1 和 Scala 2 11 8 目前我正在使用 Spark Shell 我尝试通过创建 RDD 来使用 mongo spark 连
  • Android 照片背景橡皮擦需要帮助 - 不擦除位图,而只是绘制黑线

    我正在开发 1 个应用程序 因为我需要删除位图 因为我所做的是 代码可以工作 但只是画黑线 Override protected void onDraw Canvas canvas canvas drawBitmap mBitmap 0 0
  • Interface Builder 中的 WKWebView

    XCode 6 beta 中的 IB 对象模板似乎仍在创建旧式对象 iOS 的 UIWebView 和 OSX 的 WebView 希望 Apple 能够针对现代 WebKit 更新它们 但在那之前 在 Interface Builder
  • RAP:如何访问 ViewPart 中的对象

    我如何访问Object of a View从其他地方 以下代码只是为了勾画我想要做的事情 public class View extends ViewPart public static final String ID view priva
  • 是否可以使用 Apache POI XSSF 设置活动范围?

    我正在使用 Apache POI XSSF 来读取和写入 Excel 表 我知道我可以使用以下方法在工作表上设置活动单元格Sheet setActiveCell CellAddress address 但是 我想将其设置为工作表上包含多个单
  • 如何为多张图片添加不同的 IPTC 关键字?

    我有一个包含数千张图像的文件夹 每个图像都需要添加一个唯一的关键字列表 我还有一个表格 其中的字段显示文件路径以及每个图像所需关键字的相关列表 例如 一条记录可能需要标签 ORASH 调查站点代码 人员 1 横断面 A 上游 站点布局 而下
  • 如何查看 SVN 中文件的版本树,显示从分支到主干的合并?

    我是 SVN 新手 但已经使用 Clearcase 多年 我的问题是我对一个分支进行了一些更改 我已使用 TortoiseSVN 重新集成分支 功能将其合并回主干 现在 当我查看版本树时 我没有看到从分支尖端到树干尖端渲染的任何边缘 这是我
  • 使用 Oracle SQL 选择生日在给定范围内的员工

    为了选择两个月之间的生日 其中 FROMDATE 和 TODATE 是准备好的语句中的一些参数 我想了如下 select p id as person id where e active 1 and extract month from T