`
surfingForRest
  • 浏览: 145625 次
  • 性别: Icon_minigender_2
  • 来自: 大连
社区版块
存档分类
最新评论

取生日的SQL的一点感想

阅读更多
背景:修改别人作品的BUG。

这是个取生日开始日期与结束日期“月日”之间的工作。

未修改之前的代码如下:
--开始日期与结束日期同年          
 AND (((EXTRACT(MONTH FROM BIRTHDATE) > EXTRACT(MONTH FROM TO_DATE('" | &startDate | "','YYYY-MM-DD'))      
 AND EXTRACT(MONTH FROM BIRTHDATE) < EXTRACT(MONTH FROM TO_DATE('" | &endDate | "','YYYY-MM-DD')))          
                                                                                                            
 OR  (EXTRACT(MONTH FROM BIRTHDATE) = EXTRACT(MONTH FROM TO_DATE('" | &startDate | "','YYYY-MM-DD'))        
 AND EXTRACT(DAY FROM BIRTHDATE) > EXTRACT(DAY FROM TO_DATE('" | &startDate | "','YYYY-MM-DD')))            
                                                                                                            
 OR  (EXTRACT(MONTH FROM BIRTHDATE) = EXTRACT(MONTH FROM TO_DATE('" | &endDate | "','YYYY-MM-DD'))          
 AND EXTRACT(DAY FROM BIRTHDATE) < EXTRACT(DAY FROM TO_DATE('" | &endDate | "','YYYY-MM-DD')))))            
                                                                                                            
--开始日期与结束日期不同年(代码省略)  
--对于2.29生日的人,又重新UNION ALL了一堆SQL(代码省略)  


修改后的代码如下:

--开始日期与结束日期同年  
 AND (TO_CHAR(BIRTHDATE, 'MM-DD') BETWEEN                           
 TO_CHAR(TO_DATE('" | &startDate | "','YYYY-MM-DD'), 'MM-DD') AND   
 TO_CHAR(TO_DATE('" | &endDate | "','YYYY-MM-DD'), 'MM-DD')) 
       
--开始日期与结束日期不同年
AND ((TO_CHAR(BIRTHDATE, 'MM-DD') BETWEEN                                         
TO_CHAR(TO_DATE('" | &startDate | "','YYYY-MM-DD'), 'MM-DD') AND '12-31') OR      
(TO_CHAR(BIRTHDATE, 'MM-DD') BETWEEN '01-01' AND                                  
TO_CHAR(TO_DATE('" | &endDate | "','YYYY-MM-DD'), 'MM-DD')))                      

--对于生日2.29的人以上两句完全可以搞定



这是个从EXTRACT()函数到TO_CHAR()函数的过程,记此文以祭奠俺开始对TO_CHAR()函数的无知。








分享到:
评论

相关推荐

    Oracle 根据身份证取生日 SQL 语句

    Oracle 根据身份证取生日 SQL 语句

    sql server 生日提醒

    ### SQL Server 生日提醒知识点详解 #### 一、SQL Server 生日提醒背景介绍 在许多应用场景中,我们可能需要基于用户的生日数据来触发特定的提醒或通知服务,比如发送生日祝福邮件、短信等。在这样的场景下,如何...

    生日查询软件--c#sql数据库

    标题中的“生日查询软件--c#sql数据库”指的是一个基于C#编程语言开发的应用程序,该程序设计用于从SQL数据库中检索和管理生日信息。在IT领域,这种类型的软件可以帮助用户方便地跟踪和管理个人或组织成员的生日,...

    mysql只取年月日的SQL写法.sql

    mysql只取年月日的SQL写法

    SQL 语法 SQL 总结 SQL教程

    SQL 基础 SQL 首页 SQL 简介 SQL 语法 SQL select SQL distinct SQL where SQL AND & OR SQL Order By SQL insert SQL update SQL delete SQL 高级 SQL Top SQL Like SQL 通配符 SQL In SQL Between ...

    sql server 导入超大SQL脚本文件

    SQL Server 导入超大 SQL 脚本文件 SQL Server 是一种关系型数据库管理系统,广泛应用于各种行业。然而,在实际应用中,我们经常会遇到导入超大 SQL 脚本文件的问题。本文将介绍如何使用 osql 工具来导入超大 SQL ...

    易语言取SQL服务器列表

    易语言取SQL服务器列表源码,取SQL服务器列表

    sqlserver自动生成sql语句工具sqlserver转oracle

    在IT行业中,数据库管理系统是核心组成部分,SQL Server和Oracle分别是微软和甲骨文公司推出的两款广泛应用的关系型数据库系统。在企业级应用中,有时需要在不同的数据库系统间进行数据迁移或兼容性处理,这就涉及到...

    SQLPrompt for SQLServer2016 智能提示插件 SQL2016 提示

    SQLPrompt for SQLServer2016 智能提示插件 SQL2016 提示 SQLPrompt最新版本 绿色版 SQL Prompt 是一款拥有SQL智能提示功能的SQL Server和VS插件。SQL Prompt能根据数据库的对象名称,语法和用户编写的代码片段自动...

    SQL.Cookbook(中文高清PDF)

    SQL.Cookbook 《SQL Cookbook中文版》中的SQL 是计算机世界的语言,在用关系数据库开发报表时,将数据放入数据库以及从数据库中取出来,都需要SQL 的知识。...《SQL Cookbook中文版》就是要帮助大家认识到这一点。

    SQLMonitor oracle跟踪SQL工具

    《SQLMonitor:Oracle数据库SQL跟踪与分析利器》 在IT行业中,数据库的高效管理与优化是至关重要的。针对Oracle数据库,有一款名为SQLMonitor的工具,它专为跟踪和监控SQL语句而设计,帮助开发者和DBA们找出程序...

    kettle链接SQL server驱动 sqljdbc

    在Kettle中配置SQL Server数据库连接时,我们需要依赖特定的数据库驱动,这就是SQL JDBC驱动。 SQL JDBC驱动是微软提供的Java Database Connectivity (JDBC) 驱动,使得Java应用程序能够与SQL Server进行交互。有两...

    mysql转化成sql server sql转化成mysql工具

    在IT行业中,数据库管理系统(DBMS)的选择往往取决于项目需求,技术栈以及团队熟悉度。MySQL和SQL Server是两种非常流行的DBMS,分别由Oracle公司和Microsoft公司开发。当需要在两者之间进行数据迁移时,就需要用到...

    SQL Server:查询以查找当前一周的即将到来的生日

    在SQL Server中,查询当前一周的即将到来的生日是一项常见的任务,尤其对于管理客户数据库或员工信息的系统来说。这个查询通常涉及到日期运算和条件筛选,以便找出那些在接下来7天内过生日的人。以下是如何使用SQL ...

    SQL函数 根据出生日期精确计算年龄

    sql函数 可用于pb调用,根据生日日期,自动精确计算年龄。返回格式为xx岁xx月xx天 不受闰年影响

    Microsoft SQL Server Native Client (SQL Native Client)

    Microsoft SQL Server Native Client (SQL Native Client) 是一个同时包含 SQL OLE DB 访问接口和 SQL ODBC 驱动程序的动态链接库 (DLL)。它对使用本机代码 API(ODBC、OLE DB 和 ADO)连接到 Microsoft SQL Server ...

    Oracle Sql语句转换成Mysql Sql语句

    在数据库管理领域,Oracle SQL和MySQL SQL是两种广泛使用的SQL方言,它们在语法和功能上存在一定的差异。当需要将一个基于Oracle SQL的应用程序迁移到MySQL环境时,就需要进行SQL语句的转换工作。本项目提供了一个...

    SqlServer连接工具

    SQL Server连接工具是数据库管理员和开发人员用于与Microsoft SQL Server交互的重要软件。这些工具提供了多种功能,包括数据库的创建、管理、查询、备份、恢复以及性能优化等。在本篇文章中,我们将深入探讨SQL ...

    SqlServer2005 打开 SqlServer2008 mdf文件

    Sql Server 2005 打开 Sql Server 2008 mdf 文件数据库转换是指将 Sql Server 2008 中的数据库文件(mdf 文件)转换为 Sql Server 2005 可以识别的格式,以便在 Sql Server 2005 中使用。这种转换过程需要使用 Sql ...

    SQLPrompt5.3破解

    本人在Windows7 64位+SQL Server 2012环境下测试通过(系统是全新安装) 使用方法: 1,安装SQLPrompt v5.3,这个不多说。 2,安装完毕后,断开网络连接。 3,打开Visual Studio或者SQL Server Management Studio(版本...

Global site tag (gtag.js) - Google Analytics