SQLServer和Oracle的常用函数对比
- 格式:doc
- 大小:47.50 KB
- 文档页数:6
oracle和sqlserver查询语句Oracle和SQL Server是两种常见的关系型数据库管理系统(DBMS),它们在查询语句方面有一些不同之处。
在本文中,我们将一步一步回答关于Oracle和SQL Server查询语句的问题,以帮助您更好地理解它们的区别。
首先,让我们从基本的查询语句开始。
无论是Oracle还是SQL Server,都使用SELECT语句来检索数据。
下面是一个简单的示例查询,从一个名为"employees"的表中选择所有员工的姓名:SELECT name FROM employees;在这个查询中,"name"是要检索的列名,而"employees"是表的名称。
这个查询语句将返回一个包含所有员工姓名的结果集。
在Oracle中,还可以使用表别名来简化查询。
表别名是一个用于替代表名称的临时名称。
例如,我们可以使用表别名"e"来编写上面的查询:SELECT FROM employees e;在SQL Server中,也可以使用表别名。
与Oracle类似,我们可以使用“AS”关键字或直接省略关键字来定义表别名。
下面是一个相同的查询示例:SELECT FROM employees AS e;或SELECT FROM employees e;接下来,让我们来看看在Oracle和SQL Server中如何使用WHERE子句来添加条件筛选。
在Oracle中,WHERE子句用于过滤满足指定条件的行。
以下是一个示例查询,从"employees"表中选择所有薪水大于5000的员工的姓名:SELECT name FROM employees WHERE salary > 5000;在这个查询中,"salary > 5000"是条件表达式,用于指定返回薪水大于5000的员工。
Sql 与Oracle 数据类型对照SqlServer数据类型SqlServer长度Oracle数据类型bigint8 NUMBER(19)binary50 RAW(50)bit1 Char(1)char10 CHAR(10) datetime8 DATEdecimal9 NUMBER(18)float8 BINARY_DOUBLEimage16 BLOBint Integermoney8 NUMBER(19,4)nchar10 NCHAR(10)ntext16 NCLOBnumeric9 NUMBER(18)nvarchar50 NVARCHAR2(50) real4 BINARY_FLOAT smalldatetime4 DATEsmallint2 NUMBER(5)smallmoney4 NUMBER(10,4)sql_variant BLOBtext16 CLOBtimestamp8 RAW(8)tinyint1 NUMBER(3) uniqueidentifier16 BLOBvarbinary50 RAW(50)varchar50 VARCHAR2(50)Sql 与Oracle 函数对照Oracle支持的字符函数和它们的Microsoft SQL Server等价函数:函数Oracle Microsoft SQL Server把字符转换为ASCII ASCII ASCII字串连接CONCA T (expression + expression)把ASCII转换为字符CHR CHAR返回字符串中的开始字符(左起)INSTR CHARINDEX 把字符转换为小写LOWER LOWER把字符转换为大写UPPER UPPER填充字符串的左边LPAD N/A清除开始的空白LTRIM LTRIM清除尾部的空白RTRIM RTRIM字符串中的起始模式(pattern)INSTR PA TINDEX多次重复字符串RPAD REPLICA TE字符串的语音表示SOUNDEX SOUNDEX重复空格的字串RPAD SPACE从数字数据转换为字符数据TO_CHAR STR子串SUBSTR SUBSTRING替换字符REPLACE STUFF将字串中的每个词首字母大写INITCAP N/A翻译字符串TRANSLA TE N/A字符串长度LENGTH DA TELENGTH or LEN列表中最大的字符串GREA TEST N/A列表中最小的字符串LEAST N/A如果为NULL则转换字串NVL ISNULL日期函数函数Oracle Microsoft SQL Server日期相加(date column +/- value) orADD_MONTHS DA TEADD两个日期的差(date column +/- value) orMONTHS_BETWEEN DA TEDIFF当前日期和时间SYSDA TE GETDA TE()一个月的最后一天LAST_DAY N/A时区转换NEW_TIME N/A日期后的第一个周日NEXT_DAY N/A代表日期的字符串TO_CHAR DA TENAME代表日期的整数TO_NUMBER(TO_CHAR)) DA TEPART日期舍入ROUND CONVERT日期截断TRUNC CONVERT字符串转换为日期TO_DA TE CONVERT如果为NULL则转换日期NVL ISNULL转换函数函数Oracle Microsoft SQL Server数字转换为字符TO_CHAR CONVERT字符转换为数字TO_NUMBER CONVERT日期转换为字符TO_CHAR CONVERT字符转换为日期TO_DA TE CONVERT16进制转换为2进制HEX_TO_RA W CONVERT2进制转换为16进制RA W_TO_HEX CONVERT其它行级别的函数函数Oracle Microsoft SQL Server返回第一个非空表达式DECODE COALESCE当前序列值CURRV AL N/A下一个序列值NEXTV AL N/A如果exp1 = exp2, 返回null DECODE NULLIF用户登录账号ID数字UID SUSER_ID用户登录名USER SUSER_NAME用户数据库ID数字UID USER_ID用户数据库名USER USER_NAME当前用户CURRENT_USER CURRENT_USER用户环境(audit trail) USERENV N/A在CONNECT BY子句中的级别LEVEL N/A其他获取系统当前时间select sysdate from dual;获取第一条数据(sqlserver中的top 1)number=1操作符前后不能有空格数据类型转换to_number()to_Char()conertt(int as 列名)拼接字符串CONCA T(Field1,Field2)Field1||Field2往表格内添加字段alter table [Table_Name] add([Field_Name] varchar(10));大小写相互转换select upper('3dff571c-e831-4fc9-a8c9-b0227feaa9cf') from dual; --小转大select lower('3DFF571C-E831-4FC9-A8C9-B0227FEAA9CF') from dual; --大转小截取字符串SELECT substr('123456789', 6, 6) FROM dual;substr(字符串,截取开始位置(正数:从左往右数/负数:从右往左数),截取长度(指定位置向右的字符串))数据库导入导出导出EXPEXP 用户名/用户密码@数据库file=数据导出后的文件位置.dmp full=Y(注:导出数据库中所有用户,表空间,表,数据)EXP 用户名/用户密码@数据库file=数据导出后的文件位置.dmp(注:导出当前登录用户的所有表空间,表,数据)EXP 用户名/用户密码@数据库file=数据导出后的文件位置.dmp tables(table1,table2)(注:导出当前登录用户,指定表)导入IMPIMP 用户名/用户密码@数据库file=要导入的数据文件位置.dmpignore=y(表示先删除表,再创建)(注:导入数据文件中所有数据)【附加总结类文档一篇,不需要的朋友可以下载后编辑删除,谢谢】中学生感恩节主题教育活动总结5篇中学感恩节活动总结范文1一、活动目的如今虽然很多人注意到生活礼仪,谢谢常挂在嘴边,但是大家或许是因为羞于表达或许出于缺少机会而省略了对于身边亲人、朋友和老师的感谢。
SqlServer和Oracle,db2的区别1.开放性:SQL Server 只能在windows 上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。
Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。
而且windows平台的可靠性,安全性和伸缩性是非常有限的。
它不象unix那样久经考验,尤其是在处理大数据量的关键业务时.Oracle 能在所有主流平台上运行(包括 windows)。
完全支持所有的工业标准。
采用完全开放策略。
可以使客户选择最适合的解决方案。
对开发商全力支持。
DB2 能在所有主流平台上运行(包括windows)。
最适于海量数据。
DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%.2.可伸缩性,并行性SQL server DB2 并行实施和共存模型并不成熟。
很难处理日益增多的用户数和数据卷。
伸缩性有限。
Oracle 平行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。
如果windowsNT不能满足需要, 用户可以把数据库移到UNIX中。
DB2 DB2具有很好的并行性。
DB2把数据库管理扩充到了并行的、多节点的环境. 数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。
数据库分区有时被称为节点或数据库节点3.安全性SQL server 没有获得任何安全证书。
Oracle Server 获得最高认证级别的ISO标准认证。
DB2 获得最高认证级别的ISO标准认证。
4.性能SQL Server 多用户时性能不佳Oracle 性能最高,保持windowsNT下的TPC-D和TPC-C的世界记录。
DB2 适用于数据仓库和在线事物处理性能较高。
5.客户端支持及应用模式SQL Server C/S结构,只支持windows客户,可以用ADO,DAO,OLEDB ,ODBC连接.Oracle 多层次网络计算,支持多种工业标准,可以用ODBC, JDBC,OCI等网络客户连接DB2 跨平台,多层结构,支持ODBC,JDBC等客户6.操作简便SQL Server 操作简单,但只有图形界面.Oracle 较复杂, 同时提供GUI和命令行,在windowsNT和unix 下操作相同DB2 操作简单,同时提供GUI和命令行,在windowsNT和unix 下操作相同7.使用风险SQL server 完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。
Oracle和SQLServer的语法区别这一部分概述了transact-sql和pl/sql语言语法之间的相同点和不同点,并给出转换策略。
要将oracledml语句和pl/sql程序迁移到sqlserver时,请按下列步骤执行:1.验证所有select、insert、update和delete语句的语法是有效的。
进行任何必要的修正。
2.把所有外部联接改为sql-92标准外部联接语法。
3.用相应sqlserver函数替代oracle函数。
4.检查所有的比较运算符。
5.用“+”字符串串联运算符替代“||”字符串串联运算符。
6.用transact-sql程序替代pl/sql程序。
7.把所有pl/sql游标改为非游标select语句或transact-sql游标。
8.用transact-sql过程代替pl/sql过程、函数和包。
9.把pl/sql触发器转换为transact-sql触发器。
10.使用setshowplan语句,优化查询性能。
select语句oracle和microsoftsqlserver使用的select语句语法类似。
sqlserver不积极支持oracle的startwithuconnectby子句。
在sqlserver中,可以建立顺利完成相同任务的存储过程替代它。
sqlserver不支持oracle的intersect和minus集合运算符。
可使用sqlserverexists和notexists子句,实现相同的结果。
在下面示例中,采用intersect运算符,用作搜寻学生备案的所有课程的代码和名称。
特别注意,exists运算符就是如何替代intersect运算符的。
回到的数据就是相同的。
oracleselectccode,cnamefromdept_ode,amefroms tudent_admin.gradeg,dept_ode=odemicrosoftsqlserversel ectccode,cnamefromdept_admin.classcwhereexists(select'x'fromstudent_admin.grad ode=ode)在此例中,使用minus运算符,查找那些没有任何学生登记的课程。
SQL server 与Oracle开发比较本文档主要从oracle与sql server语法上进行差异性比较,诸如两者在管理,性能,优化等方面的差异不作比较。
●概念上区别1.Oracle 是一种对象关系数据库管理系统(ORDBMS),而Sql server 只是关系型数据库管理系统(RDBMS).2.Oracle使用Internet文件系统,该系统基于Java的应用程序,可以使数据库基于成为Internet的开发平台;Sql server 是基于windows3.两者支持的命令类别差不多,数据定义语言,数据操纵语言,事务处理控制语言,数据控制语言.在Oracle中,在事务控制语言中除了commit,rollback等还多了一个Savepoint,设置保存点。
4.oracle sql的扩展叫PL/SQL,主要的结构化查询工具有sql*plus,isql*plus, pl/sql等,Ms sql的扩展叫Transact-SQL,主要的结构化查询工具就是自带的查询分析器5.主要数据类型Orace:主要支持char ,varchar2,long,number,datetime,raw,longraw,clob,blob,bfie前面三个是Character数据类型,varchar2支持可变长度的字符串,long支持可变长度的字符数据,raw,long raw用于存储二进制数据,long raw 可变长度最后三个是大对象(lob)数据类型,存储非结构化的信息,例如声音剪辑,视频文件CLOG表示Character Lob,可以存储大量的字符数据,它对于存储非结构化的XML 文档非常有用。
BLOG表示Binary LOG,此数据类型可以存储大型二进制对象,如图形、视频剪辑,声音文件等支不支持,money,货币Sql server 主要支持的文本类型char ,varchar,nchar,nvarchar,text,ntext,image,货币类型Money,二进制 binary,varbinary等等●开发语法A.SQL 语法两者的SQL语法基本上是相同的,只是一些细节方面的问题一、表的管理:修改表的结构,如增加,删除列,创建表修改表1.修改表的列的数据类型,大小的定义不同,如下面修改数据类型。
SQL 语言支持这一部分概述了 Transact-SQL 和 PL/SQL 语言语法之间的相同点和不同点,并给出转换策略。
要将 Oracle DML 语句和 PL/SQL 程序迁移到 SQL Server 时,请按下列步骤执行:1.验证所有 SELECT、INSERT、UPDATE 和 DELETE 语句的语法是有效的。
进行任何必要的修改。
2.把所有外部联接改为 SQL-92 标准外部联接语法。
3.用相应 SQL Server 函数替代 Oracle 函数。
4.检查所有的比较运算符。
5.用“+”字符串串联运算符代替“||”字符串串联运算符。
6.用 Transact-SQL 程序代替 PL/SQL 程序。
7.把所有 PL/SQL 游标改为非游标 SELECT 语句或 Transact-SQL 游标。
8.用 Transact-SQL 过程代替 PL/SQL 过程、函数和包。
9.把 PL/SQL 触发器转换为 Transact-SQL 触发器。
10.使用 SET SHOWPLAN 语句,优化查询性能。
SELECT 语句Oracle 和 Microsoft SQL Server 使用的 SELECT 语句语法类似。
SQL Server 不支持 Oracle 特定的基于开销的优化程序提示,它必须被删除。
建议使用的技术是,使用 SQL Server 基于开销的优化程序。
有关详细信息,请参见本章后面的“SQL 语句优化”。
SQL Server 不支持 Oracle 的 START WITHUCONNECT BY 子句。
在 SQL Server 中,可以创建完成相同任务的存储过程替代它。
SQL Server 不支持 Oracle 的 INTERSECT 和 MINUS 集合运算符。
可使用 SQL Server EXISTS 和 NOT EXISTS 子句,实现相同的结果。
在下面示例中,使用 INTERSECT 运算符,用于查找学生登记的所有课程的代码和名称。
Oracle与SQL Server的SQL使用区别整理人:阮淑芳日期:2005-12-15一、数据类型二、自动增长字段以做主键识别2、创建SEQUENCE,将此SEQUENCE与需类ID化的列对应;3、在INSERT语句中对相应列引用其SEQUENCE值:SEQUENCENAME.NEXTVAL三、常用函数3.5其他函数AVGCOUNTMAXMINSUMSTDEVVARISNULL(check_exp,replace_value)CASE AVGCOUNTMAXMINSUMSTDDEVVARIANCENVL(check_exp,replace_value)DECODE1)ISNULL与NVL在MSSQL中ISNULL;在ORACLE中,同样的功能用NVL实现。
2)CASE与DECCODE对某个值进行多个判断分支进行处理.四、常用SQL语法[ELSE{statement|statement_block}] 4>循环语句:WHILEWHILE boolean_condition [{statement|statement_block} ][BREAK][condition]5>RETURN语句用于无条件退出一个批处理、存储过程或触发器;用于存储过程中返回状态值。
LOOP{statement|statement_block};[EXIT[WHEN condition];] END LOOP;B、WHILE循环语句WHILE condition LOOP {statement|statement_block};END LOOP;C、数字式FOR循环语句FOR loop_counter IN[REVERSE]l ow_bound..high_bound LOOP {statement|statement_block};END LOOP;4.3T-SQL中的游标提取循环语句:1)FETCH[NEXT FROM]cursor_na me INTO@variable_1,...@varia ble_n2) WHILE@@FETCH_STATUS=0 BEGINOther_statements FETCH[NEXT FROM]cursor_na me INTO@variable_1,...@varia ble_nEND3)CLOSE cursor_name4.4事务处理语句:1>开始一个事务:BEGIN TRAN[SACTION[transaction_name]]2>提交一个事务:COMMIT TRAN[SACTION[transaction_name]]3>回滚一个事务:ROLLBACK TRAN[SACTION[transaction_name]]4>使用事务保存点:BEGIN TRAN[SACTION[transaction_name]]SAVE TRAN[SACTION]savepoint_nameROLLBACK TRAN[SACTION]savepoint_name在PL/SQL中,事务的开始位置是从前一个事务结束以后执行的第一条SQL语句,或者在连接到该数据库以后所执行的第一条SQL语句。
SQL Server 与 Oracle 区别一: SQL Server的常用函数与Oracle的转换关系日期函数SQL Server OracleGetdate() SysdateDatediff(minute,BeginDate,endDate) (Trunc(EndDate,’MI’)-Trunc(BeginDate,’MI’))*24*60 Datediff(Hour,BeginDate,EndDate) (Trunc(EndDate,’HH’)-Trunc(BeginDate,’HH’))*24 Datediff(Day,Begindate,endDate) Trunc(EndDate,’DD’)-Trunc(BeginDate,’DD’) Datediff(month,Begindate,EndDate) Months_between(Enddate,BeginDate)Datediff(year,BeginDate,EndDate) Months_Between(EndDate,Begindate)/12 DateAdd(Day,n,Term) Term+nDateAdd(month,n,Term) Months_Add(term,n)DateAdd(year,n,Term) Months_Add(term,n*12)Datepart (Day,term) To_Number(To_Char(Term,’DD’))Datepart(month,term) To_Number(To_Char(Term,’MM’))Datepart(year,term) To_Number(To_Char(Term,’YYYY))Datepart(weekday,term) Trunc(Term,’dd’)-Trunc(term,’day’)+1DateAdd(Day,1-Day(Term),Term) Trunc(Term,’month’)DateAdd(Day,-Day(DateAdd(month,1,Term)), DateAdd(month,1,Term))Last_day(Term)数学函数SQL Server OracleRound(Num,s) Round(Num,s)Floor(Num) Floor(Num)Ceiling(Num) CEIL(num)字符函数SQL Server OracleCharindex(str1,string) Instr(string,str1)Substring(string,p,l) Substr(string,p,l)Left(string,l) substr(string,1,l)Right(string,l) substr(string,-1,l)Len(string) Length(string)Replace(string,str1,str2) Replace(string,str1,str2)Upper(string) Upper(string)Lower(string) Lower(string)Char(num) Chr(num)Ascii(s) Ascii(s)Str1+str2 Str1||str2类型转换函数SQL Server OracleCast(string as smalldatetime) To_Date(string,’YYYY-MM-DD HH24:MI:SS’) Cast(string as datetime) To_Date(string,’YYYY-MM-DD HH24:MI:SS’) Cast(string as int) To_number(string)Cast(String as decimal(p,s)) Round(To_Number(string),s)Cast(Number as varchar) To_char(number)Convert(varchar(10),term,120) To_Char(term,’YYYY-MM-DD’)Convert(varchar(19),term,120) To_Char(term,’YYYY-MM-DD HH24:MI:SS’)分组汇总函数SQL Server OracleSum(num) Sum(num)Avg(num) Avg(num)Count(*) Count(*)Max() Max()Min() Min()Isnull(string,str1) Nvl(String,str1)Isnull(Number,num1) Nvl(Number,num1)。
目录Oracle 截取字符(substr),检索字符位置(instr) (1)SQLServer和Oracle的常用函数对比 (2)Oracle 截取字符(substr),检索字符位置(instr)1.SUBSTR(string,start_position,[length])求子字符串,返回字符串解释:string 元字符串start_position 开始位置(从0开始)length 可选项,子字符串的个数For example:substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字符substr("ABCDEFG", 2); //返回:CDEFG,截取从C开始之后所有字符substr("ABCDEFG", 0, 3); //返回:ABC,截取从A开始3个字符substr("ABCDEFG", 0, 100); //返回:ABCDEFG,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。
substr("ABCDEFG", 0, -3); //返回:EFG,注意参数-3,为负值时表示从尾部开始算起,字符串排列位置不变。
2.INSTR(string,subString,position,ocurrence)查找字符串位置解释:string:源字符串subString:要查找的子字符串position:查找的开始位置ocurrence:源字符串中第几次出现的子字符串For example:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置;返回结果为14 'SQLServer和Oracle的常用函数对比数学函数1.绝对值S:select abs(-1) valueO:select abs(-1) value from dual2.取整(大)S:select ceiling(-1.001) valueO:select ceil(-1.001) value from dual3.取整(小)S:select floor(-1.001) valueO:select floor(-1.001) value from dual4.取整(截取)S:select cast(-1.002 as int) valueO:select trunc(-1.002) value from dual5.四舍五入S:select round(1.23456,4) value 1.23460O:select round(1.23456,4) value from dual 1.23466.e为底的幂S:select Exp(1) value 2.7182818284590451O:select Exp(1) value from dual 2.718281827.取e为底的对数S:select log(2.7182818284590451) value 1O:select ln(2.7182818284590451) value from dual; 18.取10为底对数S:select log10(10) value 1O:select log(10,10) value from dual; 19.取平方S:select SQUARE(4) value 16O:select power(4,2) value from dual 1610.取平方根S:select SQRT(4) value 2O:select SQRT(4) value from dual 211.求任意数为底的幂S:select power(3,4) value 81O:select power(3,4) value from dual 8112.取随机数S:select rand() valueO:select sys.dbms_random.value(0,1) value from dual;13.取符号S:select sign(-8) value -1O:select sign(-8) value from dual -114.圆周率S:SELECT PI() value 3.1415926535897931O:不知道15.sin,cos,tan 参数都以弧度为单位例如:select sin(PI()/2) value 得到1(SQLServer)16.Asin,Acos,Atan,Atan2 返回弧度17.弧度角度互换(SQLServer,Oracle不知道)DEGREES:弧度-〉角度RADIANS:角度-〉弧度数值间比较18. 求集合最大值S:select max(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select greatest(1,-2,4,3) value from dual19. 求集合最小值S:select min(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select least(1,-2,4,3) value from dual20.如何处理null值(F2中的null以10代替)S:select F1,IsNull(F2,10) value from TblO:select F1,nvl(F2,10) value from Tbl21.求字符序号S:select ascii('a') valueO:select ascii('a') value from dual22.从序号求字符S:select char(97) valueO:select chr(97) value from dual23.连接S:select '11'+'22'+'33' valueO:select CONCAT('11','22')||33 value from dual23.子串位置 --返回3S:select CHARINDEX('s','sdsq',2) valueO:select INSTR('sdsq','s',2) value from dual23.模糊子串的位置 --返回2,参数去掉中间%则返回7S:select patindex('%d%q%','sdsfasdqe') valueO:oracle没发现,但是instr可以通过第四个参数控制出现次数select INSTR('sdsfasdqe','sd',1,2) value from dual 返回624.求子串S:select substring('abcd',2,2) valueO:select substr('abcd',2,2) value from dual25.子串代替返回aijklmnefS:SELECT STUFF('abcdef', 2, 3, 'ijklmn') valueO:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual26.子串全部替换S:没发现O:select Translate('fasdbfasegas','fa','我' ) value from dual27.长度S:len,datalengthO:length28.大小写转换 lower,upper29.单词首字母大写S:没发现O:select INITCAP('abcd dsaf df') value from dual30.左补空格(LPAD的第一个参数为空格则同space函数)S:select space(10)+'abcd' valueO:select LPAD('abcd',14) value from dual31.右补空格(RPAD的第一个参数为空格则同space函数)S:select 'abcd'+space(10) valueO:select RPAD('abcd',14) value from dual32.删除空格S:ltrim,rtrimO:ltrim,rtrim,trim33. 重复字符串S:select REPLICATE('abcd',2) valueO:没发现34.发音相似性比较(这两个单词返回值一样,发音相同)S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dualSQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差返回0-4,4为同音,1最高日期函数35.系统时间S:select getdate() valueO:select sysdate value from dual36.前后几日直接与整数相加减37.求日期S:select convert(char(10),getdate(),20) valueO:select trunc(sysdate) value from dualselect to_char(sysdate,'yyyy-mm-dd') value from dual38.求时间S:select convert(char(8),getdate(),108) valueO:select to_char(sysdate,'hh24:mm:ss') value from dual39.取日期时间的其他部分S:DATEPART 和 DATENAME 函数(第一个参数决定)O:to_char函数第二个参数决定参数---------------------------------下表需要补充year yy, yyyyquarter qq, q (季度)month mm, m (m O无效)dayofyear dy, y (O表星期)day dd, d (d O无效)week wk, ww (wk O无效)weekday dw (O不清楚)Hour hh,hh12,hh24 (hh12,hh24 S无效)minute mi, n (n O无效)second ss, s (s O无效)millisecond ms (O无效)----------------------------------------------40.当月最后一天S:不知道O:select LAST_DAY(sysdate) value from dual41.本星期的某一天(比如星期日)S:不知道O:SELECT Next_day(sysdate,7) vaule FROM DUAL;42.字符串转时间S:可以直接转或者select cast('2004-09-08'as datetime) valueO:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;43.求两日期某一部分的差(比如秒)S:select datediff(ss,getdate(),getdate()+12.3) valueO:直接用两个日期相减(比如d1-d2=12.3)SELECT (d1-d2)*24*60*60 vaule FROM DUAL;44.根据差值求新的日期(比如分钟)S:select dateadd(mi,8,getdate()) valueO:SELECT sysdate+8/60/24 vaule FROM DUAL;45.求不同时区时间S:不知道O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;-----时区参数,北京在东8区应该是Ydt-------AST ADT 大西洋标准时间BST BDT 白令海标准时间CST CDT 中部标准时间EST EDT 东部标准时间GMT 格林尼治标准时间HST HDT 阿拉斯加?夏威夷标准时间MST MDT 山区标准时间NST 纽芬兰标准时间PST PDT 太平洋标准时间YST YDT YUKON标准时间。
OracleMysqlSqlServer函数区别Oracle/Mysql/SqlServer函数区别文章分类:数据库Sql代码1.类型转换--Oracleselect to_number('123') from dual; --123;select to_char(33) from dual; --33;select to_date('2004-11-27','yyyy/mm/dd') from dual;--2004-11-27--Mysqlselect cast('123' as signed integer); --123select cast(33 as char(2)); --33;select to_days('2000-01-01'); --730485--SqlServerselect cast('123' as decimal(30,2)); --123.00select cast(33 as char(2)); --33;select convert(varchar(12) , getdate(), 120)2.四舍五入函数区别--Oracleselect round(12.86*10)/10 from dual; --12.9--Mysqlselect format(12.89,1); --12.9--SqlServerselect round(12.89,1); --12.93.日期时间函数--Oracleselect sysdate from dual; --日期时间--Mysqlselect sysdate(); --日期时间select current_date(); --日期--SqlServerselect getdate(); --日期时间select datediff(day,'2010-01-01',cast(getdate() as varchar(10)));--日期相差天数4.Decode函数--Oracleselect decode(sign(12),1,1,0,0,-1) from dual;--1--Mysql/SqlServerselect case when sign(12)=1 then 1 when sign(12)=0 then 0 else -1 end;--15.判空函数--Oracleselect nvl(1,0) from dual; --1--Mysqlselect ifnull(1,0); --1--SqlServerselect isnull(1,0); --16.字符串连接函数--Oracleselect '1'||'2' from dual; --12select concat('1','2'); --12--Mysqlselect concat('1','2'); --12--SqlServerselect '1'+'2'; --127.记录限制函数--Oracleselect 1 from dual where rownum <= 10;-- Oracle 分页算法一select * from (select page.*,rownum rn from (select * from help) page-- 20 = (currentPage-1) * pageSize + pageSizewhere rownum <= 20)-- 10 = (currentPage-1) * pageSizewhere rn > 10;-- Oralce 分页算法二-- 20 = (currentPage-1) * pageSize + pageSizeselect * from help where rownum<=20minus-- 10 = (currentPage-1) * pageSizeselect * from help where rownum<=10;--Mysqlselect 1 from dual limit 10;select * from dual limit 10,20--SqlServerselect top 10 18.字符串截取函数--Oracleselect substr('12345',1,3) from dual;--Mysql/SqlServerselect substring('12345',1,3);8.把多行转换成一合并列--Oracleselect wm_concat(列名) from dual; --多行记录转换成一列之间用,分割--Mysql/SqlServerselect group_concat(列名);SQLServer和Oracle的常用函数对比1.绝对值S:select abs(-1) valueO:select abs(-1) value from dual2.取整(大)S:select ceiling(-1.001) valueO:select ceil(-1.001) value from dual3.取整(小)S:select floor(-1.001) valueO:select floor(-1.001) value from dual4.取整(截取)S:select cast(-1.002 as int) valueO:select trunc(-1.002) value from dual5.四舍五入S:select round(1.23456,4) value 1.23460O:select round(1.23456,4) value from dual 1.23466.e为底的幂S:select Exp(1) value 2.7182818284590451O:select Exp(1) value from dual 2.718281827.取e为底的对数S:select log(2.7182818284590451) value 1O:select ln(2.7182818284590451) value from dual; 18.取10为底对数S:select log10(10) value 1O:select log(10,10) value from dual; 19.取平方S:select SQUARE(4) value 16O:select power(4,2) value from dual 1610.取平方根S:select SQRT(4) value 2O:select SQRT(4) value from dual 211.求任意数为底的幂S:select power(3,4) value 81O:select power(3,4) value from dual 8112.取随机数S:select rand() valueO:select sys.dbms_random.value(0,1) value from dual;13.取符号S:select sign(-8) value -1O:select sign(-8) value from dual -1----------数学函数14.圆周率S:SELECT PI() value 3.1415926535897931O:不知道15.sin,cos,tan 参数都以弧度为单位例如:select sin(PI()/2) value 得到1(SQLServer)16.Asin,Acos,Atan,Atan2 返回弧度17.弧度角度互换(SQLServer,Oracle不知道) DEGREES:弧度-〉角度RADIANS:角度-〉弧度---------数值间比较18. 求集合最大值S:select max(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select greatest(1,-2,4,3) value from dual19. 求集合最小值S:select min(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select least(1,-2,4,3) value from dual20.如何处理null值(F2中的null以10代替)S:select F1,IsNull(F2,10) value from TblO:select F1,nvl(F2,10) value from Tbl--------数值间比较21.求字符序号S:select ascii('a') valueO:select ascii('a') value from dual22.从序号求字符S:select char(97) valueO:select chr(97) value from dual23.连接S:select '11'+'22'+'33' valueO:select CONCAT('11','22')||33 value from dual23.子串位置--返回3S:select CHARINDEX('s','sdsq',2) valueO:select INSTR('sdsq','s',2) value from dual23.模糊子串的位置--返回2,参数去掉中间%则返回7S:select patindex('%d%q%','sdsfasdqe') valueO:oracle没发现,但是instr可以通过第四霾问 刂瞥鱿执问?BR> select INSTR('sdsfasdqe','sd',1,2) value from dual 返回624.求子串S:select substring('abcd',2,2) valueO:select substr('abcd',2,2) value from dual25.子串代替返回aijklmnefS:SELECT STUFF('abcdef', 2, 3, 'ijklmn') valueO:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual26.子串全部替换S:没发现O:select Translate('fasdbfasegas','fa','我' ) value from dual27.长度S:len,datalengthO:length28.大小写转换lower,upper29.单词首字母大写S:没发现O:select INITCAP('abcd dsaf df') value from dual30.左补空格(LPAD的第一个参数为空格则同space函数)S:select space(10)+'abcd' valueO:select LPAD('abcd',14) value from dual31.右补空格(RPAD的第一个参数为空格则同space函数)S:select 'abcd'+space(10) valueO:select RPAD('abcd',14) value from dual32.删除空格S:ltrim,rtrimO:ltrim,rtrim,trim33. 重复字符串S:select REPLICATE('abcd',2) valueO:没发现34.发音相似性比较(这两个单词返回值一样,发音相同)S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差返回0-4,4为同音,1最高--------------日期函数35.系统时间S:select getdate() valueO:select sysdate value from dual36.前后几日直接与整数相加减37.求日期S:select convert(char(10),getdate(),20) valueO:select trunc(sysdate) value from dualselect to_char(sysdate,'yyyy-mm-dd') value from dual38.求时间S:select convert(char(8),getdate(),108) valueO:select to_char(sysdate,'hh24:mm:ss') value from dual39.取日期时间的其他部分S:DATEPART 和DATENAME 函数(第一个参数决定)O:to_char函数第二个参数决定参数---------------------------------下表需要补充year yy, yyyyquarter qq, q (季度)month mm, m (m O无效)dayofyear dy, y (O表星期)day dd, d (d O无效)week wk, ww (wk O无效)weekday dw (O不清楚)Hour hh,hh12,hh24 (hh12,hh24 S无效)minute mi, n (n O无效)second ss, s (s O无效)millisecond ms (O无效)----------------------------------------------40.当月最后一天S:不知道O:select LAST_DAY(sysdate) value from dual41.本星期的某一天(比如星期日)S:不知道O:SELECT Next_day(sysdate,7) vaule FROM DUAL;42.字符串转时间S:可以直接转或者select cast('2004-09-08'as datetime) valueO:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;43.求两日期某一部分的差(比如秒)S:select datediff(ss,getdate(),getdate()+12.3) valueO:直接用两个日期相减(比如d1-d2=12.3)SELECT (d1-d2)*24*60*60 vaule FROM DUAL;44.根据差值求新的日期(比如分钟)S:select dateadd(mi,8,getdate()) valueO:SELECT sysdate+8/60/24 vaule FROM DUAL;45.求不同时区时间S:不知道O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;-----时区参数,北京在东8区应该是Ydt-------AST ADT 大西洋标准时间BST BDT 白令海标准时间CST CDT 中部标准时间EST EDT 东部标准时间GMT 格林尼治标准时间HST HDT 阿拉斯加—夏威夷标准时间MST MDT 山区标准时间NST 纽芬兰标准时间PST PDT太平洋标准时间YST YDT YUKON标准时间。
Oracle与Sql-Server函数对照下面是Oracle支持的字符函数和它们的Microsoft SQL Server等价函数:函数 OracleSQL Server把字符转换为ASCII : ASCII ASCII字串连接: CONCAT (expression + expression)把ASCII转换为字符CHR CHAR返回字符串中的开始字符(左起)INSTR CH ARINDEX把字符转换为小写LOWER LOWER把字符转换为大写UPPER UPPER填充字符串的左边LPAD N/A清除开始的空白LTRIM LTRIM清除尾部的空白RTRIM RTRIM字符串中的起始模式(pattern)INSTR PATINDEX多次重复字符串RPAD REPLICATE字符串的语音表示SOUNDEX SOUNDEX重复空格的字串RPAD SPACE从数字数据转换为字符数据TO_CHAR STR子串SUBSTRSUBSTRING替换字符 REPLACE STUFF将字串中的每个词首字母大写INITCAP N/A翻译字符串TRANSLATE N/A字符串长度LENGTH DATELENGTH or LEN列表中最大的字符串 GREATEST N/A列表中最小的字符串LEAST N/A如果为NULL则转换字串NVL ISNULL日期相加 (date column +/- value) or ADD_MONTHS DATEADD两个日期的差(date column +/- value) or MONTHS_BETWEEN DATEDIFF当前日期和时间 SYSDATE GETDATE()一个月的最后一天LAST_DAY N/A时区转换NEW_TIME N/A日期后的第一个周日 NEXT_DAY N/A代表日期的字符串 TO_CHARUSER_NAME当前用户CURRENT_USERCURRENT_USER在CONNECT BY子句中的级别 LEVEL N /AAverage AVG AVGCount COUNT COUNTMaximum MAXMAXMinimum MINMINSummation SUM SUMVariance VARIANCEVAR or VARP特殊的几种:1..字串连接Oracle使用两个管道符号(||)来作为字串连接操作符,SQL Server则使用加号(+)。
日期函数下面是Oracle支持的日期函数和它们的Microsoft SQL Server等价函数。
函数Oracle --------------------Microsoft SQL Server日期相加(date column +/- value) or ADD_MONTHS --------------------DATEADD两个日期的差(date column +/- value) or MONTHS_BETWEEN --------------------DATEDIFF 当前日期和时间SYSDATE --------------------GETDATE()一个月的最后一天LAST_DAY --------------------N/A时区转换NEW_TIME --------------------N/A日期后的第一个周日NEXT_DAY --------------------N/A代表日期的字符串TO_CHAR --------------------DATENAME代表日期的整数TO_NUMBER (TO_CHAR)) --------------------DATEPART日期舍入ROUND --------------------CONVERT日期截断TRUNC --------------------CONVERT字符串转换为日期TO_DATE --------------------CONVERT如果为NULL则转换日期NVL -------------------- ISNULL一、sql server日期时间函数Sql Server中的日期与时间函数1. 当前系统日期、时间select getdate()2. dateadd 在向指定日期加上一段时间的基础上,返回新的datetime 值例如:向日期加上2天select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.0003. datediff 返回跨两个指定日期的日期和时间边界数。
1.基础语法1.1.时间函数●获取当前日期Oracle:sysdate;SQLSserver:getdate();●转换成字符串Oracle:to_char(sysdate,'yyyy-MM-dd HH24:mi:ss ')SQLSserver:Convert(varchar(19),getdate(),120)●相加/相减Oracle:add_months(sysdate,1)--当前日期加一月sysdate+21---当前日期加21天add_months(sysdate,12);sysdate+interval '1' year---加一年(year)interval 也可以加月(month)/日(day)extract(year from 时间) 或者to_char(时间,'yyyy')--取回日期的指定部分,extract只限年月日SQLSserver:1.2.Oracle中insert into select和select into的用法(异常0RA-00905:missing keyword的解决)两张表进行数据的拷贝,最常用的拷贝语句是:insert into select 和 select into from但是请绝对的注意:在Oracle中select into from不可以使用-----原因很简单:select into 是PL/SQL language 的赋值语句!如果使用则Oracle会抛出0RA-00905:missing keyword的异常!但是可以用create table select代替该功能!!!具体参考下面测试代码!但是在Sql Server中可以正常使用。
先做个小测试:-- 建表create table test1(id number primary key,testname varchar2(20),createtime date,falg varchar2(10));create table test2(id number primary key,testname varchar2(20),createtime date,falg varchar2(10));-- 插入测试数据insert into test1 values(1,'测试数据1....1',sysdate-2,'N');insert into test1 values(2,'测试数据1....2',sysdate-2,'N');insert into test1 values(3,'测试数据1....3',sysdate-2,'N'); commit;-- 使用insert into select 拷贝数据(注意红色部分,可以自动生成id 序列值)insert into test2(id,testname,createtime,falg)select seq_test.nextval,t1.testname,t1.createtime,t1.falg from test1 t1;-- 使用 create table select 创建被拷贝数据(注意要删除test2表先)create table test2 as select t1.id,t1.testname,t1.createtime,t1.falg from test1 t1;-- select into from 不可以,抛异常select t1.id,t1.testname,t1.createtime,t1.falg intotest2(id,testname,createtime,falg)from test1 t1;-- PL/SQL language 中select into赋值语句的测试使用create or replace procedure test1_prodisaa varchar2(100);beginselect t1.testname into aa from test1 t1 where id=1;dbms_output.put_line('t1.testname= '|| aa);end;总结:数据拷贝,建议使用insert into select;使用insert into select时如果对拷贝表生成id序列值,需要在select中以查询出的形式从sequence中查询出,再插入拷贝表;比如:insert into test2(id,testname,createtime,falg)select seq_test.nextval,t1.testname,t1.createtime,t1.falg from test1 t1;典型从test1表查询出数据插入test2表,test2要自动插入id,看上面代码,id要在select中先从sequence中查询出了!!Oracle函数问题,报(ORA-01422: 实际返回的行数超出请求的行数。
平时的项目开发中,分页存储过程是用的比较多的存储过程,SqlServer分页存储过程中经常要用到top,Oracle中则经常用到了RowNum.,mysql中常用到limit现在,有一个UserInfo表,一个字段是UserId,另一个字段是UserName,其中是UserId是自动增长的,步长是1.表中共有30条数据,其中UserId的值不一定是连续的。
现在要实现的目的是取其中的第11至第20条记录。
先看SqlServer的几种做法: 第一种写法:select top10*from UserInfowhere UserId in(select top20 UserIdfrom UserInfo)order by UserId desc第二种写法:select top10*from UserInfo where UserId not in(select top 10 UserId from UserInfo )第三种写法:select top10*from UserInfo where UserId>(select max(UserId) from(select top10 UserId from UserInfo order by UserId) a)第四种写法(只可在Sqlserver 2005中):select*from (select Row_Number() over(Order by UserId) as RowId ,* from UserInfo) Uwhere U.RowId between 10 and 20Sqlserver 中其实还有另外几种写法,不一一写出。
四种方法中,后两种的写法要比前两种写法效率要高些,但第四种只能写在SqlServer 2005中。
在看Oracle中实现取其中的第11至第20条记录的做法之前,先看看一些人在使用RowNum遇到的莫名其妙的怪事。
Oracle与SQL Server对比这两种数据库之间架构上的比较操作系统的支持Microsoft SQL Server只支持Windows平台,要让Microsoft发布一个支持其它操作系统版本的可能性当然是小之又小的了。
当前来说 SQL Server可以在XP、Vista、Windows Server 2000、2003、2008上运行,同时也有针对于32位和64位版本Windows的数据库版本。
对Oracle来说,它支持多种不同的操作系统平台,包括Windows,另外还有支持Linux和不同分支的Unix.实例、数据库和表空间SQL Server和Oracle之间第一个架构级别的差异就在于对实例 (instance)和数据库(database)概念的定义了。
SQL Server中,实例一词用来代表一个包含了操作系统文件、内存结构、后台进程以及注册表信息的独立的应用服务。
在Windows系统中用一个存在着停止和运行状态的服务来代表一个实例,当处于运行状态时,实例要占用一定的服务器内存以及生成一定数量的后台进程。
SQL Server实例的中心是数据库。
一个SQL Server数据库指的是一个资料库以及操作数据所需要的程序代码,当实例没有运行时,实例中的数据库就不能够访问。
SQL Server有两种数据库:系统数据库(system databases)和用户数据库(user databases)。
在一个SQL Server实例安装完成之后,将会自动创建4个系统数据库:master, model, msdb, tempdb。
如果一个机器上面安装了多个SQL Server实例时,每个实例都会有自己单独的一套系统数据库。
除了msdb数据库之外,其它数据库不能访问或是被损坏都会导致实例无法启动。
相比之下用户数据库由DBA或者是开发人员在数据库实例安装完毕、系统数据库都启动之后所创建的,这些数据库中保存着公司的业务资料。
SQLServer和Oracle的常用函数对比---------数学函数1.绝对值S:select abs(-1) valueO:select abs(-1) value from dual2.取整(大)S:select ceiling(-1.001) valueO:select ceil(-1.001) value from dual3.取整(小)S:select floor(-1.001) valueO:select floor(-1.001) value from dual4.取整(截取)S:select cast(-1.002 as int) valueO:select trunc(-1.002) value from dual5.四舍五入S:select round(1.23456,4) value 1.23460O:select round(1.23456,4) value from dual 1.23466.e为底的幂S:select Exp(1) value 2.7182818284590451O:select Exp(1) value from dual 2.718281827.取e为底的对数S:select log(2.7182818284590451) value 1O:select ln(2.7182818284590451) value from dual; 18.取10为底对数S:select log10(10) value 1O:select log(10,10) value from dual; 19.取平方S:select SQUARE(4) value 16O:select power(4,2) value from dual 1610.取平方根S:select SQRT(4) value 2O:select SQRT(4) value from dual 2在线代理|网页代理|代理网页|11.求任意数为底的幂S:select power(3,4) value 81O:select power(3,4) value from dual 8112.取随机数S:select rand() valueO:select sys.dbms_random.value(0,1) value from dual;13.取符号S:select sign(-8) value -1O:select sign(-8) value from dual -1----------数学函数14.圆周率S:SELECT PI() value 3.1415926535897931O:不知道15.sin,cos,tan 参数都以弧度为单位例如:select sin(PI()/2) value 得到1(SQLServer)16.Asin,Acos,Atan,Atan2 返回弧度17.弧度角度互换(SQLServer,Oracle不知道)DEGREES:弧度-〉角度RADIANS:角度-〉弧度---------数值间比较18. 求集合最大值S:select max(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select greatest(1,-2,4,3) value from dual19. 求集合最小值S:select min(value) value from在线代理|网页代理|代理网页|(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select least(1,-2,4,3) value from dual20.如何处理null值(F2中的null以10代替)S:select F1,IsNull(F2,10) value from TblO:select F1,nvl(F2,10) value from Tbl--------数值间比较21.求字符序号S:select ascii('a') valueO:select ascii('a') value from dual22.从序号求字符S:select char(97) valueO:select chr(97) value from dual23.连接S:select '11'+'22'+'33' valueO:select CONCAT('11','22')||33 value from dual23.子串位置--返回3S:select CHARINDEX('s','sdsq',2) valueO:select INSTR('sdsq','s',2) value from dual23.模糊子串的位置--返回2,参数去掉中间%则返回7S:select patindex('%d%q%','sdsfasdqe') valueO:oracle没发现,但是instr可以通过第四霾问 刂瞥鱿执问?BR>select INSTR('sdsfasdqe','sd',1,2) value from dual 返回624.求子串S:select substring('abcd',2,2) valueO:select substr('abcd',2,2) value from dual25.子串代替返回aijklmnef在线代理|网页代理|代理网页|S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') valueO:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual26.子串全部替换S:没发现O:select Translate('fasdbfasegas','fa','我' ) value from dual27.长度S:len,datalengthO:length28.大小写转换lower,upper29.单词首字母大写S:没发现O:select INITCAP('abcd dsaf df') value from dual30.左补空格(LPAD的第一个参数为空格则同space函数)S:select space(10)+'abcd' valueO:select LPAD('abcd',14) value from dual31.右补空格(RPAD的第一个参数为空格则同space函数)S:select 'abcd'+space(10) valueO:select RPAD('abcd',14) value from dual32.删除空格S:ltrim,rtrimO:ltrim,rtrim,trim33. 重复字符串S:select REPLICATE('abcd',2) valueO:没发现34.发音相似性比较(这两个单词返回值一样,发音相同)S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dualSQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差返回0-4,4为同音,1最高--------------日期函数35.系统时间S:select getdate() value在线代理|网页代理|代理网页|O:select sysdate value from dual36.前后几日直接与整数相加减37.求日期S:select convert(char(10),getdate(),20) valueO:select trunc(sysdate) value from dualselect to_char(sysdate,'yyyy-mm-dd') value from dual38.求时间S:select convert(char(8),getdate(),108) valueO:select to_char(sysdate,'hh24:mm:ss') value from dual39.取日期时间的其他部分S:DA TEPART 和DA TENAME 函数(第一个参数决定)O:to_char函数第二个参数决定参数---------------------------------下表需要补充year yy, yyyyquarter qq, q (季度)month mm, m (m O无效)dayofyear dy, y (O表星期)day dd, d (d O无效)week wk, ww (wk O无效)weekday dw (O不清楚)Hour hh,hh12,hh24 (hh12,hh24 S无效)minute mi, n (n O无效)second ss, s (s O无效)millisecond ms (O无效)----------------------------------------------40.当月最后一天S:不知道O:select LAST_DAY(sysdate) value from dual41.本星期的某一天(比如星期日)S:不知道O:SELECT Next_day(sysdate,7) vaule FROM DUAL;42.字符串转时间S:可以直接转或者select cast('2004-09-08'as datetime) valueO:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL; 在线代理|网页代理|代理网页|43.求两日期某一部分的差(比如秒)S:select datediff(ss,getdate(),getdate()+12.3) valueO:直接用两个日期相减(比如d1-d2=12.3)SELECT (d1-d2)*24*60*60 vaule FROM DUAL;44.根据差值求新的日期(比如分钟)S:select dateadd(mi,8,getdate()) valueO:SELECT sysdate+8/60/24 vaule FROM DUAL;45.求不同时区时间S:不知道O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;-----时区参数,北京在东8区应该是Ydt-------AST ADT 大西洋标准时间BST BDT 白令海标准时间CST CDT 中部标准时间EST EDT 东部标准时间GMT 格林尼治标准时间HST HDT 阿拉斯加—夏威夷标准时间MST MDT 山区标准时间NST 纽芬兰标准时间PST PDT 太平洋标准时间YST YDT YUKON标准时间---------------------------------------在线代理|网页代理|代理网页|。