1.确定两个日期之间的工作日天数 --确定两个日期之间的工作日天数with x0 as (select to_date('2018-01-01','yyyy-mm-dd') as 日期 from dual union all select to_date('2018-01-15','yyyy-mm-dd') as 日期 from dual ), x1 as --日期并列显示 (select min (日期) 开始日期,max(日期) 结束日期 from x0 ), x2 as --日期之间的天数…
开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成.为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数的使用使得这些经典的难题可以被轻松的解决.目前在 MSSQLServer.Oracle.DB2 等主流数据库中都提供了对开窗函数的支持,不过非常遗憾的是 MYSQL 暂时还未对开窗函数给予支持. 开窗函数简介:与聚合函数一样,开窗函数也是对行集组进行聚合计算,但是它不像普通聚合函数那样每组只返回一个值…
原文地址:http://www.agiledata.org/essays/keys.html 本文概述关系数据库中为表指定主键的策略.主要关注于何时使用自然键或者代理键的问题.有些人会告诉你应该总是使用自然键,而另外一些人会告诉你应该总是使用代理键.这些人总是被证明是错误的,通常他们仅仅是与你分享了他们"数据信仰"的偏见.事实上自然键与代理键具有各自的优缺点,没有在所有情况下都完美的策略.也就是说,你必须清楚你要做的事情才能做好它.本文讨论以下内容: 常用的术语 选择键的策略 代理键实…
一.    物化视图概述 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照. 物化视图可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果.物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能:物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性:物化视图需要占用存储…
关于这一点一直就是很懵懂的状态,今天特意网上查了一下资料,以下摘抄网上比较好的答案.以作记录. 普通视图和物化视图的区别答曰:普通视图和物化视图根本就不是一个东西,说区别都是硬拼到一起的,首先明白基本概念,普通视图是不存储任何数据的,他只有定义,在查询中是转换为对应的定义SQL去查询,而物化视图是将数据转换为一个表,实际存储着数据,这样查询数据,就不用关联一大堆表,如果表很大的话,会在临时表空间内做大量的操作.普通视图的三个特征:1.是简化设计,清晰编码的东西,他并不是提高性能的,他的存在只会降…
/*语法*/ lag(exp_str,offset,defval) over() Lead(exp_str,offset,defval) over() --exp_str要取的列 --offset取偏移后的第几行数据 --defval:没有符合条件的默认值 with x0 as (select '1'as aa ,to_date('2018-01-01','yyyy-mm-dd') as 日期 from dual union all select '2' as aa,to_date('2018-…
SYSDATE 2009-6-16 15:25:10 TRUNC(SYSDATE) 2009-6-16 TO_CHAR(SYSDATE,'YYYYMMDD') 20090616 到日 TO_CHAR(SYSDATE,'YYYYMMDD HH24:MI:SS') 20090616 15:25:10 到秒 TO_CHAR(SYSTIMESTAMP,'YYYYMMDD HH24:MI:SS.FF3') 20090616 15:25:10.848 到毫秒 TO_CHAR(SYSDATE,'AD') 公元…
需求:一串字母'ADFGH',需要按照顺序来显示:A D F G H 第一步:先把字符串拆分 with test as( select 'ADFGH' as a from dual ) select a ,substr(a,level,1) from test connect by level<=length(a) 第二步:用listagg拼接 with test as( select 'ADFGH' as a from dual ) select a ,(select listagg(subs…
今天遇到一个问题,not in 查询失效,我以为是穿越了,仔细查了点资料,原来理解有误! select value from temp_a a where a.id between 1 and 100 and not exists(select * from temp_b b where a.value=b.value); 这时能查出结果 select value from temp_a a where a.id between 1 and 100 and a.value not in(sele…
with aa as ( select 'sad10' as data from dual union all select 'datf20' as data from dual union all select 'java30' as data from dual ) select regexp_replace(data,'[0-9]','') as english, regexp_replace(data,'[^0-9]','') as num from aa     ENGLISH    …
to_char函数的官方文档说明: 详细to_char请移步:https://www.cnblogs.com/reborter/archive/2008/11/28/1343195.html 需求:number类型的数据0.12,显示为.12,这显然是不符合用户习惯的.因此用到to_char处理. select to_char('0.23','FM99990.00') from dual; 显示: 0.23…
--给用户授权 GRANT CREATE MATERIALIZED VIEW TO CDR; --创建物化视图的表日志(具体到某个表,物化视图中用到几个表就需要建立几个日志):当用FAST选项创建物化视图,必须创建基于主表的视图日志,如下: CREATE MATERIALIZED VIEW LOG ON a TABLESPACE CDR WITH ROWID; --查询物化视图日志 SELECT * FROM MLOG$_A --创建物化视图 CREATE MATERIALIZED VIEW V…
create table A ( id VARCHAR2(36), name VARCHAR2(100), sl VARCHAR2(36) ); insert all into a (id,name)values ('1','小吴')into a (id,name)values('2','小李') into a (id,name)values('3','小夏') into a (id,name)values('4','小夏') into a (id,name)values('5','小明') i…
union内部必须有相同的列或者相同的数据类型,同时,每条 SELECT 语句中的列的顺序必须相同.union合并了select的结果集. union 与union all的不同: union合并了重复的行.union all则是返回全部的行.…
问题描述:我们在写存储过程和函数的时候经常会碰到利用当前日期计算出上周开始日期.结束日期,或者计算上个月的开始日期结束日期等问题.最近写了几个存储过程和函数,其中都涉及到了日期计算问题,在这里简单做一个总结,留待以后查阅. 涉及知识分享:SQL中的日期计算主要涉及到GETDATE().DATEDIFF()和DATEADD()三个方法,利用这三个方法的巧妙组合就可以得到我们想要的日期结果.首先,简单介绍一下这三个方法的定义: (1)GETDATE(): 定义:从 SQL Server 返回当前的时…
SQL 根据日期精确计算年龄 第一种: 一张人员信息表里有一人生日(Birthday)列,跟据这个列,算出该人员的年龄 datediff(year,birthday,getdate()) 例:birthday = '2003-3-8' getDate()= '2008-7-7' 结果为:5 这样结果是会返回该人员的大概年龄,但不精确.不会精确到月或日. 按照上面测试的日期,该人员的实际年龄应该还不满5岁.在需要精确年龄的时候,就会有错. 第二种: FLOOR(datediff(DY,birthd…
SQL Server 日期的加减函数: DATEDIFF    DATEADD DATEDIFF: 返回跨两个指定日期的日期边界数和时间边界数, 语法:DATEDIFF ( datepart , startdate , enddate ) 用 enddate 减去 startdate    注:datepart 指定应在日期的哪一部分计算差额的参数,其日期相减时,只关注边界值,例SELECT DATEDIFF(YEAR,'2008-12-31','2009-1-1') 返回 1      DAT…
SQL Server日期函数之获得一个月中的天数在实际中的应用比例还是占为多数的,如果你对这一技术,心存好奇的话,以下的文章将会揭开它的神秘面纱,望会在以后的学习或是工作中带来很大的帮助. 获得一个月的天数,技巧是:首先到得一个月最后一天的日期,然后通过 SQL Server 日期函数 day() 取得日期中的“天” 部分. 获得 2008 年 2 月份的天数: select day(cast('2008-03-01' as datetime) - 1) 获得本月天数: select day(d…
原文:SQL Server 日期相关 原帖出处:http://blog.csdn.net/dba_huangzj/article/details/7657979 对于开发人员来说,日期处理或许简单,或许很难.结合自己过往的开发经验并整合网上的例子,总结出一些日期相关的操作,供自己备用及为大家分享: 一.日期类型: 对于SQL Server 2008 来说(因为2000甚至2005已经稍微有被淘汰的迹象,所以在此不作过多说明,加上自己工作使用的是2008R2.所以不保证08以前的能用),日期类型有…
目录 SQL学习日记 1. 常见的数据库对象 2. DDL 定义语句 3. DML 操作语句 4. DQL 查询语句 5. DCL 控制语句 SQL学习日记 1. 常见的数据库对象 对象名 关键字 描述 表 table 存储数据的逻辑单元,以行和列存在,行是数据记录,列是(属性)字段 系统表(数据字典) 存放数据库相关信息的表 程序员只可查看,不可修改 约束 constraint 执行数据校验和保证数据完整性的规则 视图 view 一个或多个数据表(table)的逻辑显示,视图并不存储数据 索引…
一.sql server日期时间函数Sql Server中的日期与时间函数 1.  当前系统日期.时间     select getdate()  2. dateadd  在向指定日期加上一段时间的基础上,返回新的 datetime 值   例如:向日期加上2天    select dateadd(day,2,'2004-10-15')  --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数.   select datediff(…
在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日期时间转字符串的相关知识,接下来就让我们一起来了解一下这部分内容. 日期时间转字符串: Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1):…
在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日期时间转字符串的相关知识,接下来就让我们一起来了解一下这部分内容. 日期时间转字符串: Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1):…
在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日期时间转字符串的相关知识,接下来就让我们一起来了解一下这部分内容. 日期时间转字符串: Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1):…
本文导读:在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.下面主要就介绍一下SQL Server日期时间转字符串的相关知识 一.日期转换为字符串.日期格式 1.使用函数CONVERT: CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) 2.参数 expression :是任何有效的 sql 表达式.. data_ty…
在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日期时间转字符串的相关知识,接下来就让我们一起来了解一下这部分内容. 日期时间转字符串: Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1):…
SQL 语句日期用法及函数 --DAY().MONTH().YEAR()——返回指定日期的天数.月数.年数:select day(cl_s_time) as '日' from class  --返回天select '月'=month(cl_s_time) from class  --返回月select '年'=year(cl_s_time) from class  --返回年 --DATEADD(datepart,number,date)——在日期上增加给定日期类型的数量:select date…
获得一个月的天数:首先到得一个月最后一天的日期,通过 SQL Server 日期函数 day() 取得日期中的“天 ”部分 获得 2008 年 2 月份的天数:select day(cast('2008-03-01' as datetime) - 1) 获得本月天数: 返回一个整数,该整数表示指定的 date 是该月份的哪一天. select day(dateadd(month,1,getdate()) - day(getdate())) 获得上个月天数:select day(getdate()…
一.sql server日期时间函数Sql Server中的日期与时间函数 1.  当前系统日期.时间     select getdate()  2. dateadd  在向指定日期加上一段时间的基础上,返回新的 datetime 值   例如:向日期加上2天    select dateadd(day,2,'2004-10-15')  --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数.   select datediff(…
本文我们主要介绍了SQL Server日期时间格式转换字符串的相关知识,并给出了大量实例对其各个参数进行对比说明,希望能够对您有所帮助. 在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日期时间转字符串的相关知识,接下来就让我们一起来了解一下这部分内容. 日期时间转字符串: Select CONVERT(varchar(100), GETDATE(…