oracle常见业务语句(收集)

本文介绍了SQL中处理日期的多种方法,包括如何获取日期的不同部分及查询指定时间段内的数据。此外,还对比了使用instr与like进行模糊查询的效果与性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概要

本文用于记录日常工作中遇到的常见sql语句记录(不定时更新~)

日期相关

判断某个日期是星期几

SELECT to_char(to_date(‘2020-10-19’,‘YYYY-MM-DD’),‘day’) FROM DUAL
在这里插入图片描述

to_char的其他用法

Select to_char(sysdate,‘ss’) from dual取当前时间秒部分
Select to_char(sysdate,‘mi’) from dual取当前时间分钟部分
Select to_char(sysdate,‘HH24’) from dual取当前时间秒小时部分
Select to_char(sysdate,‘DD’) from dual取当前时间日期部分
Select to_char(sysdate,‘MM’) from dual取当前时间月部分
Select to_char(sysdate,‘YYYY’) from dual取当前时间年部分
Select to_char(sysdate,‘w’) from dual取当前时间是一个月中的第几周(从1日开始算)
Select to_char(sysdate,‘ww’) from dual取当前时间是一年中的第几周(从1.1开始算)
Select to_char(sysdate,‘iw’) from dual取当前时间是一年中的第几周(按实际日历的)
Select to_char(sysdate,‘d’) from dual取当前时间是一周的第几天,从星期天开始,周六结束
Select to_char(sysdate,‘day’) from dual 取当前日是星期几,和数据库设置的字符集有关,会输出’Tuesday’
Select to_char(sysdate,‘ddd’) from dual 当前日是一年中的第几天

查询某段日期内某个时间段的数据

客户要求“我们现在需要近两个月每个工作日(周一至周五)17:30-20:00的工单受理量,和每周末(周六日)的工单受理量。”

SELECT count(1)
  FROM pe_test p
 WHERE 1=1
-- and O.CREATEDATETIME BETWEEN SYSDATE-60 AND SYSDATE --近60天
 and  p.registoron BETWEEN TO_DATE('2020-09-01 00:00', 'yyyy-mm-dd hh24:mi') AND  TO_DATE('2020-10-01 00:00', 'yyyy-mm-dd hh24:mi')--2020年9月到2020年10月
   AND ((TO_CHAR(p.registoron, 'hh24:mi:ss') BETWEEN '17:30:00' AND
       '20:00:00'
   AND to_char(p.registoron,'day')  not in('星期六','星期日'))or ( to_char(p.registoron,'day')  in('星期六','星期日')))

模糊查询

instr与like的对比

SELECT * FROM STUDENTTAB WHERE STUNAME LIKE '%张%';
--就相当于 
SELECT * FROM STUDENTTAB WHERE INSTR(STUNAME, '张') > 0;
 
SELECT * FROM STUDENTTAB WHERE STUNAME NOT LIKE '%张%';
--就相当于 
SELECT * FROM STUDENTTAB WHERE INSTR(STUNAME, '张') = 0;

1、 instr>0 和like、instr=0 和not like 一般来说查询的结果相同(不考虑特殊字符)
2、 instr是一个函数,可以建立函数索引,如果过滤的条件有索引,那么instr就可以提高性能。
3、 like查询时,以’%'开头,列所加的索引是不起作用的。
4、在没有索引的前提下,当数据量比较大时,instr要比like效率高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello,Mr.S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值