文档章节

oralce日期类函数,数据库编码查询,序列操作工作笔记

work_mingyan
 work_mingyan
发布于 2017/09/08 14:25
字数 2269
阅读 1
收藏 0
点赞 0
评论 0

日期函数:  

NEXT_DAY(date,char)

说明:
date参数为日期型,
char:为1~7或Monday/Mon~Sunday/

指定时间的下一个星期几(由char指定)所在的日期,
char也可用1~7替代,1表示星期日,2代表星期一。。。
还可以是星期一、星期二。。。星期日 。

 NEXT_DAY(d,number)  
  --◎ 时间点d开始,下一个星期几的日期  
  --◎ 星期日 = 1  星期一 = 2  星期二 = 3  
  --   星期三 = 4  星期四 = 5  星期五 = 6  星期六 = 7   

工作实例:
    Select * From RECEIVE_BOX a Where trunc(RECEIVE_TIME)>=trunc(Sysdate,'d')

    AND trunc(RECEIVE_TIME)<= Next_day(trunc(sysdate,'d'),7)

其他日期函数:
    ADD_MONTHS(d,n)  
     --时间点d再加上n个月  

    LAST_DAY(d)  
      --时间点d当月份最后一天   
trunc函数:

      trunc(sysdate,'yyyy') --返回当年第一天。

  trunc(sysdate,'mm') --返回当月第一天。

  trunc(sysdate,'d') --返回当前星期的第一天。

  trunc(sysdate,'dd')--返回当前年月日


      TRUNC(89.985,2)=89.98

  TRUNC(89.985)=89

  TRUNC(89.985,-1)=80

  注意:
          第二个参数为正数,指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分。
          第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。
          与取整类似,比如参数为1即取整到十分位,如果是-1,则是取整到十位,以此类推。
加法
select sysdate,add_months(sysdate,12) from dual; --加1年
select sysdate,add_months(sysdate,1) from dual; --加1月
select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期
select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual; --加1天
select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --加1小时
select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1分钟
select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1秒

减法
select sysdate,add_months(sysdate,-12) from dual; --减1年
select sysdate,add_months(sysdate,-1) from dual; --减1月
select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual; --减1星期
select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual; --减1天
select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --减1小时
select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1分钟
select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1秒 

 
查询本周内(周一到周日)的数据:
SELECT count(1) AS NEW_NOTICE FROM MESSAGE_HISTORY a WHERE trunc(CREATE_TIME)>=Next_day(trunc(Sysdate,'d'),2)
AND trunc(CREATE_TIME)<= Next_day(trunc(sysdate,'d'),1)
查询七天内的数据:
select count(1) from MESSAGE_HISTORY where CREATE_TIME >= to_date(to_char(sysdate - 7,'yyyy-mm-dd HH24:MI:SS'),'yyyy-mm-dd hh24:mi:ss') 

 

查看数据库编码:

select * from V$NLS_PARAMETERS
字符串的方法:

1、length() 字符串的长度
2、charAt() 截取一个字符
3、 getChars() 截取多个字符
4、getBytes()
  替代getChars()的一种方法是将字符存储在字节数组中,该方法即getBytes()。
5、toCharArray()
6、equals()和equalsIgnoreCase() 比较两个字符串
7、regionMatches() 用于比较一个字符串中特定区域与另一特定区域,它有一个重载的形式允许在比较中忽略大小写。
8、startsWith()和endsWith()  startsWith()方法决定是否以特定字符串开始,endWith()方法决定是否以特定字符串结束
9、compareTo()和compareToIgnoreCase() 比较字符串
10、indexOf()和lastIndexOf()
  indexOf() 查找字符或者子串第一次出现的地方。
  lastIndexOf() 查找字符或者子串是后一次出现的地方。

11、substring()  它有两种形式,第一种是:String substring(int startIndex)
         第二种是:String substring(int startIndex,int endIndex)

12、concat() 连接两个字符串

13 、replace() 替换
  它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下:
  String replace(char original,char replacement)
  例如:String s="Hello".replace('l','w');
  第二种形式是用一个字符序列替换另一个字符序列,形式如下:
  String replace(CharSequence original,CharSequence replacement)

14、trim() 去掉起始和结尾的空格

15、valueOf() 转换为字符串

16、toLowerCase() 转换为小写

17、toUpperCase() 转换为大写

18、 notify()和 notifyAll()


* oracle 查询库中所有的序列:

   select SEQUENCE_NAME from user_sequences; 
   select * from user_sequences;  

 Oracle修改序列(Sequence)起始值的方法:

    Oracle 序列(Sequence)主要用于生成流水号,在应用中经常会用到,特别是作为ID值,拿来做表主键使用较多。

    但是,有时需要修改序列初始值(START WITH)时,有同仁使用这个语句来修改:alter sequence sequencename 
    start with xxxxxxxx。但是,在Oracle DB中,修改序列没有这样的语法。下面介绍几种修改方式:

    1.先删除序列,然后重新创建。不过这不是当前要讲的重点。这个方法比较暴力,也比较方便,如果序列有在用,会影响应用的正常使用。

    2.写个循环来增加。如果需要增加500,写个循环运行500次SELECT SEQUENCE_NAME.NEXTVAL FROM DUAL;

    3.通过Increment By来实现修改初始值。

    例如:若序列名称是SEQ_TEST,初始值是13,而现在要设置初始值为1013,Increment By值为:1000(1013-13)

    1) 执行:ALTER SEQUENCE SEQ_TEST INCREMENT BY 1000;

    2) 执行:SELECT SEQ_TEST.NEXTVAL FROM DUAL;

    3) 执行:ALTER SEQUENCE SEQ_TEST INCREMENT BY 1;

删除一个序列

DROP SEQUENCE seq_newsId;


 生成序列号实例:

 -- 建一个序列SEQ_TEST
create sequence SEQ_TEST
minvalue 1        --最小值
nomaxvalue        --不设置最大值
start with 1      --从1开始计数
increment by 1    --每次加1个
nocycle           --一直累加,不循环
nocache;          --不建缓冲区

注意:

以上代码完成了一个序列(sequence)的建立过程,名称为SEQ_TEST,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,如果你设置了最大值那么你可以用cycle 会使seq到最大之后循环.对于nocache顺便说一下如果你给出了cache值那么系统将自动读取你的cache值大小个seq,这样在反复操作时会加快运行速度,但如果遭遇意外情况如当机了或oracle死了,则下次取出的seq值将和上次的不连贯.(如果连不连贯无所谓建议用cache,因为时间就是金钱呀!)
你只有了表和序列还不够,最好再建一个触发器来执行它!代码如下:

CREATE OR REPLACE TRIGGER tg_test 
BEFORE INSERT ON test FOR EACH ROW WHEN (new.nid is null)
begin
select seq_test.nextval into:new.nid from dual;
end;


语法解析:

① START WITH:从某一个整数开始,升序默认值是1,降序默认值是-1。

② INCREMENT BY:增长数。如果是正数则升序生成,如果是负数则降序生成。升序默认值是1,降序默认值是-1。

③ MAXVALUE:指最大值。

④ NOMAXVALUE:这是最大值的默认选项,升序的最大值是:1027,降序默认值是-1。

⑤ MINVALUE:指最小值。

⑥ NOMINVALUE:这是默认值选项,升序默认值是1,降序默认值是-1026。

⑦ CYCLE:表示如果升序达到最大值后,从最小值重新开始;如果是降序序列,达到最小值后,从最大值重新开始。

⑧ NOCYCLE:表示不重新开始,序列升序达到最大值、降序达到最小值后就报错。默认NOCYCLE。

⑨ CACHE:使用CACHE选项时,该序列会根据序列规则预生成一组序列号。保留在内存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统再生成一组新的序列号,并保存在缓存中,这样可以提高生成序列号的效率。Oracle默认会生产20个序列号。

⑩ NOCACHE:不预先在内存中生成序列号。

案例2:创建一个从1开始,默认最大值,每次增长1的序列,要求NOCYCLE,缓存中有30个预先分配好的序列号。

 CREATE SEQUENCE MYSEQ

    MINVALUE 1
 
    START WITH 1

    NOMAXVALUE

    INCREMENT BY 1

    NOCYCLE

    CACHE 30

Sequence created

  
mysql 存储过程批量操作:

    ##如果此存储过程存在,先删除,方便以下再创建同名的存储过程
    DROP PROCEDURE IF EXISTS sp_test; 
      ##括号中是参数, INd代表是入参,int是参数的数据类型
    CREATE PROCEDURE sp_test(IN loopNumber INT,IN loopName VARCHAR(32))
    
    begin 
                ##定义一个变量,类型为int,默认值为0
                declare id int default 0;
                ##while 循环,通过传入的数值和定义的变量做判断,确定需要插入多少数据
                while id <loopNumber DO 
                        SET id=id+1;  
                        insert into student(name) values(loopName);
                 ##循环结束
                end WHILE; 

    end 

    CALL sp_test(); 

oracle:
start with conditon 给出的seed 数据的范围, connect by  后面给出了递归查询的条件,prior 关键字表示父数据,prior 条件表示子数据需要满足父数据的什么条件。

---------------------------------------------------------------------------------------------------------

该注解,是hibernate、morphia等框架的注解。
@Transient,使用hibernate时,当关联多个表进行查询,返回某一个实体类的时候,如果在此实体类中定义了不和表映射的字段属性,查询不会报错,而在此表进行新增修改数据时报错。此注解可以很好的规避这个问题。

注意:将此注解注解在字段上,而不是get set方法上。

© 著作权归作者所有

共有 人打赏支持
work_mingyan
粉丝 0
博文 4
码字总数 5840
作品 0
南京
高级程序员
oralce与mysql的区别

有些人说Oracle没有限制,实际上他们说得可能是Oracle不支持LIMIT语法.不过可以rownum虚列来实现,不过会更加麻烦.   2. Oracle不支持偏移(offset)语法. 3. Oracle的复制功能可能比MySQL更加...

wersdffg ⋅ 2015/10/17 ⋅ 0

php操作Oralce

Oralce与Mysql在操作上有很大区别,比如: Oralce字段使用关键字时需要加引号写到SQL中,如:user,order,size等。 Oralce没有limit而需要用numrow记录序号,如提取第三条后四数据:numrow>...

ttlxihuan ⋅ 2017/10/15 ⋅ 0

Oracle常识基础(一)

一.Oracle数据类型 1.字符数据类型 .> char:可以存储字母数字值,长度在1到2000个字节。 .> varchar2:存储可变长度的char类型字符串,大小在1到4000个字节范围内。 .> long:存储可变长度的字符...

技术小胖子 ⋅ 2017/11/02 ⋅ 0

数据库笔记

数据库 : 关系型数据库: 关系 ,数据 ,数据之间约束 组成的数据结构。 数据库厂商: ORacle MYSQL 等 数据操作语言: DDL :数据定义语言 建立修改删除 数据库对象 ,包括 创建语句 crea...

wow863597 ⋅ 2016/05/28 ⋅ 0

Mysql /Oralce 50个区别

   1. 有些人说Oracle没有限制,实际上他们说得可能是Oracle不支持LIMIT语法.不过可以rownum虚列来实现,不过会更加麻烦.   2. Oracle不支持偏移(offset)语法. 3. Oracle的复制功能可能比M...

pczhangtl ⋅ 2014/08/03 ⋅ 0

mysql与oracle区别

编号 ORACLE MYSQL 注释 1 NUMBER int / DECIMAL DECIMAL就是NUMBER(10,2)这样的结构INT就是是NUMBER(10),表示整型; MYSQL有很多类int型,tinyint mediumint bigint等,不同的int宽度不一样...

architect刘源源 ⋅ 03/08 ⋅ 0

PHP 易混淆知识点的实用指南(下)

原文链接:http://phpbestpractices.justjavac.com/ 净化 HTML 输入和输出 对于简单的数据净化,使用 htmlentities() 函数, 复杂的数据净化则使用 HTML Purifier 库 经 HTML Purifier 4.4.0 ...

eapxuo ⋅ 02/23 ⋅ 0

Python操作MySQL数据库(二):MySQLdb模块

Python操作mysql数据库:MySQLdb模块 (2012-12-21 14:52:00) Python中的mysql操作可以使用MySQLdb模块来完成。它符合Python社区设计的Python Database API SpecificationV2.0标准,所以与其他...

人间四月 ⋅ 2016/03/17 ⋅ 0

oracle 学习 笔记 随笔

1、配置数据名称的时候 有个SID 这个是ServiceID,服务ID,网络连接使用的。建议数据名称与SID一致。 安装oracle时候字符集选择utf-8,示例方案打钩。 为所有账户使用相同口令。设置口可能不...

AIting ⋅ 2016/11/27 ⋅ 0

mysql 学习笔记

一、数据库简单介绍 1、 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系统中,关系型数据...

五大三粗 ⋅ 2015/02/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

tcp/ip详解-链路层

简介 设计链路层的目的: 为IP模块发送和接收IP数据报 为ARP模块发送ARP请求和接收ARP应答 为RARP模块发送RARP请求和接收RARP应答 TCP/IP支持多种链路层协议,如以太网、令牌环往、FDDI、RS-...

loda0128 ⋅ 47分钟前 ⋅ 0

spring.net aop代码例子

https://www.cnblogs.com/haogj/archive/2011/10/12/2207916.html

whoisliang ⋅ 今天 ⋅ 0

发送短信如何限制1小时内最多发送11条短信

发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当...

黄威 ⋅ 昨天 ⋅ 0

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 昨天 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 昨天 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 昨天 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 昨天 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

SpringBoot简单使用ehcache

1,SpringBoot版本 2.0.3.RELEASE ①,pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELE......

暗中观察 ⋅ 昨天 ⋅ 0

Spring源码解析(八)——实例创建(下)

前言 来到实例创建的最后一节,前面已经将一个实例通过不同方式(工厂方法、构造器注入、默认构造器)给创建出来了,下面我们要对创建出来的实例进行一些“加工”处理。 源码解读 回顾下之前...

MarvelCode ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部