zoukankan      html  css  js  c++  java
  • oracle与sqlserver的区别

      Oracle  sqlserver  mysql 
    sql语法  PLSQL  TSQL   
     数据库模式 基于表空间和用户对访问表进行操作和控制  基于数据库,用户,数据库对其进行控制和操作   
     jdbc连接

    jdbc:url=jdbc:oracle:thin:@127.0.0.1:1521:test

    jdbc:url=jdbc:oracle:thin:@IP:port:SID(如果是服务名许将:改为/) 

    jdbc:url=jdbc:oracle:thin:@IP:port/服务名 

     jdbc.url=jdbc:sqlserver://127.0.0.1:1433;databasename=test jdbc.url=jdbc:mysql://127.0.0.1:3306/test 
    分页 

    select * from
    (select t.*,rownum as rowno from TABLE1 t)
    where rowno between 10 and 20

     SELECT TOP 10 *  FROM table  select * from table WHERE … LIMIT 10; #返回前10行

    select * from table WHERE … LIMIT 0,10; #返回前10行
    select * from table WHERE … LIMIT 10,20; #返回第10-20行数据

    绝对值 select abs(-1)  value from dual--1 select abs(-1) value   
    取值(大)

    select ceil(-1.001) vaule from dual --  -1

    select ceil(1.001) vaule from dual --2

     select ceiling(-1.001) value-- -1  
    取值(小) 

    select floor(-1.001) value from dual --  -2

    select floor(1.001) value from dual --  1

     select floor(-1.001) value  -- -2

    select floor(1.001) value -- 1

     
    取整(截取)

     select trunc(-1.002) value from dual  -- -1

    select trunc(1.002) value from dual  -- 1

     select cast(-1.002 as int) value -- -1  
    四舍五入  select round(1.23456,4) value from dual --1.2346  select round(1.23456,4) value --1.23460  
    取随机数  select sys.dbms_random.value(0,1) value from dual;  select rand() value  
    求集合最大值  select greatest(1,-2,4,3) value from dual  

    select max(value) value from
    (select 1 value
    union
    select -2 value
    union
    select 4 value
    union
    select 3 value)a

     
    求集合最小值  select least(1,-2,4,3) value from dual  

    select min(value) value from
    (select 1 value
    union
    select -2 value
    union
    select 4 value
    union
    select 3 value)a

     
    处理null值  select f1,nvl(f2,10) value from table  select f1,IsNull(f2,10) value from table  
    求字符序号  select ascii('a') value from dual --97  

     select ascii('a') value

     
    从序号求字符  select chr(97) value from dual  select char(97) value  
    连接  select CONCAT(11,22)||33 value from dual(都用||也可)  select '11'+'22'+'33' value  
    子串位置  select INSTR('sdsq','s',2) value from dual--3  select CHARINDEX('s','sdsq',2) value--3  
    模糊子串的位置   

    oracle没发现,但是instr可以通过第四个参数控制出现次数
    select INSTR('sdsfasdqe','sd',1,2) value from dual  --6

    select patindex('%d%q%','sdsfasdqe') value----返回2,参数去掉中间%则返回7  
    求子串  select substr('abcd',2,2) value from dual--bc select substring('abcd',2,2) value--bc  
    子串代替  SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual --aijklmnef SELECT STUFF('abcdef', 2, 3, 'ijklmn') value --aijklmnef  
    子串全部替换  select Translate('fasdbfasegas','fa','我' ) value from dual --我sdb我segs  无  
    长度   length  len,datalength  
    大小写转换  lower,upper  lower,upper  
     左补空格(LPAD的第一个参数为空格则同space函数)

    select LPAD('abcd',14) value from dual
    select LPAD('abcd',14,'0') value from dual--第三个参数默认为空格,右补为RPAD

     
     select space(10)+'abcd' value  
     删除空格  ltrim,rtrim,trim  ltrim,rtrim  
     重复字符串  无  select REPLICATE('abcd',2) value  
     系统时间  select sysdate value from dual  select getdate() value  
     前后几日  直接与整数相加减  直接与整数相加减  
     时间格式 select now();

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串
    select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年
    select to_char(sysdate,'mm')as nowMonth from dual; //获取时间的月
    select to_char(sysdate,'dd')as nowDayfrom dual; //获取时间的日
    select to_char(sysdate,'hh24') as nowHour from dual; //获取时间的时
    select to_char(sysdate,'mi')as nowMinute from dual; //获取时间的分
    select to_char(sysdate,'ss')as nowSecond from dual; //获取时间的秒
    to_date 同样

    日期+ 1 年  SYSDATE + INTERVAL '1' YEAR
    日期+ 1 月  SYSDATE + INTERVAL '1' MONTH
    日期+ 1 日  SYSDATE + INTERVAL '1' DAY
    日期+ 1 时  SYSDATE + INTERVAL '1' HOUR
    日期+ 1 分  SYSDATE + INTERVAL '1' MINUTE
    日期+ 1 秒  SYSDATE + INTERVAL '1' SECOND
    日期+ 1 日1 时1 分SYSDATE + INTERVAL '1 1:1' DAY TO MINUTE

    如果计算的是DATE类型,我们还可以采用如下的方式。
    DATE+ 1 日  SYSDATE + 1
    DATE+ 1 时  SYSDATE + 1/(1*24)
    DATE+ 1 分  SYSDATE + 1/(1*24*60)
    DATE+ 1 秒  SYSDATE + 1/(1*24*60*60)
    DATE+ 1 日1 时1 分SYSDATE + 1 + 1/(1*24) + 1/(1*24*60)

    select (date '2015-04-10' - date '2014-03-11') from dual

    ddd 年中的第几天
    WW 年中的第几个星期
    W 该月中第几个星期
    D 周中的星期几
    hh 小时(12)
    hh24 小时(24)
    Mi 分
    ss 秒

    select to_char(sysdate,'yyyy') from dual; --年
    select to_char(sysdate,'Q' from dual; --季
    select to_char(sysdate,'mm') from dual; --月
    select to_char(sysdate,'dd') from dual; --日

     

    select convert(nvarchar(MAX), getdate(), 20); '2018-09-26 15:44:10'
    Select CONVERT(varchar(100), getdate(), 23);'2018-09-26'
    select CONVERT(varchar(12) , getdate(), 112 ) '20180926'
    Select CONVERT(varchar(100), getdate(), 24);'15:44:10'
    Select CONVERT(varchar(100), getdate(), 8); '15:44:10'

    SELECT * FROM tablename WHERE time>='2018/1/1 11:45:00' ORDER BY time
    SELECT * FROM tablename WHERE time>='2018-01-01 11:45:00' ORDER BY time

    DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
    DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期
    DatePart (interval,date)返回日期date中,interval指定部分所对应的整数值
    DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称

    例:

    DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592 秒
    DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为 5 天
    DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期一(周日为1,周六为7)
    DatePart('d','2005-7-25 22:56:32')返回值为 25即25号
    DatePart('y','2005-7-25 22:56:32')返回值为 206即这一年中第206天
    DatePart('yyyy','2005-7-25 22:56:32')返回值为 2005即2005年

     

    select date_format(now(),'%Y-%m-%d %h:%i:%s') as '日期'
    select count(*) from table where time >='2018-04-13 16:55:00'

    select date_add(now(), interval 1 day); -- add 1 day
    select date_add(now(), interval 1 hour); -- add 1 hour
    select date_add(now(), interval 1 minute); -- ...
    select date_add(now(), interval 1 second);
    select date_add(now(), interval 1 microsecond);
    select date_add(now(), interval 1 week);
    select date_add(now(), interval 1 month);
    select date_add(now(), interval 1 quarter);
    select date_add(now(), interval 1 year);

    select datediff('2008-08-08', '2008-08-01'); -- 7
    select datediff('2008-08-01', '2008-08-08'); -- -7
    select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); -- 08:08:08
    select timediff('08:08:08', '00:00:00'); -- 08:08:08
    注意:timediff(time1,time2) 函数的两个参数类型必须相同。

    Oracle 时间函数 SYSDATE

    加法

    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秒
    

    sysdate与to_char()

    yyyy 年
    Q  季
    mm 月
    dd 日
    day 星期
    ddd 年中的第几天 
    WW 年中的第几个星期 
    W 该月中第几个星期 
    D 周中的星期几 
    hh 小时(12) 
    hh24 小时(24) 
    Mi 分 
    ss 秒 

    select to_char(sysdate,'yyyy') from dual; --年
    select to_char(sysdate,'Q') from dual; --季
    select to_char(sysdate,'mm') from dual; --月
    select to_char(sysdate,'dd') from dual; --日

    trunc()函数简介:用于截取时间或者数值,返回指定的值。

    语法
    1)日期处理:TRUNC(date,[fmt])
       date 为必要参数,是输入的一个date日期值
       fmt 参数可忽略,是日期格式,缺省时表示指定日期的0点。
    2)数值处理:TRUNC(number,[decimals]) 
       number 为必要参数,是输入的一个number数值
       decimals 参数可忽略,是要截取的位数,缺省时表示截掉小数点后边的值。 

    处理日期

    select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),
           to_char(trunc(sysdate), 'yyyy-mm-dd hh24:mi:ss')
      from dual t;
     
    --年
    select trunc(sysdate, 'yy') "当年第一天" from dual;
    select trunc(sysdate, 'yyyy') "当年第一天" from dual;
    select trunc(sysdate, 'year') "当年第一天" from dual;
    --季度
    select trunc(sysdate, 'q') "当前季度的第一天" from dual;
    select trunc(add_months(sysdate,3), 'Q') -1/24 "这个季度最后一天23点" from dual; 
    --月
    select trunc(sysdate, 'mm') "当月第一天" from dual;
    select trunc(sysdate, 'month') "当月第一天" from dual;
    select trunc(last_day(sysdate)+1) "下个月第一天的0点" from dual;
    select trunc(add_months(sysdate,1),'mm') "下个月第一天的0点"from dual;  
    select last_day(sysdate) "当月最后一天" from dual; 
    --周 
    select trunc(sysdate, 'd') "本周的第一天,周日起" from dual; 
    select trunc(sysdate,'day') "本周的第一天,周日起" from dual; 
    select next_day(TRUNC(SYSDATE ), 'TUESDAY' ) + 12/24 "下个星期二中午12点" from dual; 
    select TRUNC(LEAST(NEXT_DAY(SYSDATE, 'SATURDAY'), NEXT_DAY(SYSDATE, 'SUNDAY'))) + (6*60+10)/(24*60) "下个周六日早上6点10分" from dual; 
    --天 
    select trunc(sysdate+1) "今晚12点" from dual; 
    select trunc(sysdate+1) + (8*60+30)/(24*60) "明天早上8点30分" from dual;
    select trunc(sysdate) + 0.99999 "得到这天的最后一秒" from dual;  
    --时 
    select trunc(sysdate, 'hh')"当前小时" from dual; 
    select trunc(sysdate, 'hh24') "当前小时" from dual; 
    select trunc(sysdate) + 1/24 "当前日期1点" from dual;
    select trunc(sysdate) + 7/24 "当前日期7点" from dual;
    --分 
    select trunc(sysdate, 'mi') "当前分钟" from dual; 
    select trunc(sysdate,'mi') + 10/ (24*60) "10分钟后的时间"from dual; 
    --秒 
    select sysdate + 10/(24 * 60 * 60) "10秒钟后" from dual;--trunc没有精确到秒的精度
    --得到一年的每一天
    select trunc(sysdate,'yyyy')+ rn -1 date0
    from (select rownum rn from all_objects
    where rownum<366)
    --判断某一日子所在年分是否为润年
    select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','闰年','平年') from dual; 

    处理数值

    --123.56,将小数点右边指定位数后面的截去; 
    select trunc(123.567,2) from dual;
    --100,第二个参数可以为负数,表示将小数点左边指定位数后面的部分截去,即均以0记;
    select trunc(123.567,-2) from dual;
    --123,默认截去小数点后面的部分;
    select trunc(123.567) from dual
    

      字符串转为日期

    select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual   //显示:2021-04-12 13:15:20

    select to_date('2021-04-12,13:59:59','yyyy-mm-dd,hh24:mi:ss') from dual //显示:2021-04-12 13:59:59

    而如果把上式写作:select to_date('2021-04-12,13:59:59','yyyy-mm-dd,hh:mi:ss') from dual,则会报错,因为小时hh是12进制,13为非法输入,不能匹配。

    所有博客均为自己学习的笔记。如有错误敬请理解。
  • 相关阅读:
    JavaScript基础(13_宿主对象DOM)
    JavaScript基础(12_正则表达式)
    JavaScript基础(11_字符串的基本操作)
    JavaScript基础(10_call()方法与apply()方法)
    JavaScript基础(09_数组(Array))
    JavaScript基础(08_垃圾回收)
    c# tolist() 浅析
    技术人员,你的表达能力怎样?
    jquery中的$("#id")与document.getElementById("id")的区别
    MVC Filter验证登录
  • 原文地址:https://www.cnblogs.com/tangtang-benben/p/14510072.html
Copyright © 2011-2022 走看看