SQLServer和Oracle常用函数对比
Oracle与SQL Server比较
Oracle可在所有主流平台上运行,包括Windows、Unix、Linux等等。同时Oracle数据库采用开放的策略目标,它使得客户可以选择一种最适合他们特定需要的解决方案。客户可以利用很多种第三方应用程序、工具。对开发商来说是很大的支持。而SQL Server却只能在Windows上运行了,显得比较单调。从操作平台这点上Oracle是完全优胜于SQL Server的了。
Oracle与SQL Server比较
一、 操作平台
操作系统的稳定对数据库来说是十分重要的,由于SQL Server与Windows操作系统同属Microsoft公司的产品,所以在和Windows操作系统的整体结合程度、使用方便性、和Microsoft开发平台的整合性都比Oracle强的很多;但是Windows操作系统的稳定性及可靠性大家是有目共睹的,并且 Microsoft公司的策略目标是将客户都锁定到Windows平台的环境当中,只有随着Windows性能的改善,SQL Server才能进一步提高。
4. 临时表
SQL Server创建的临时表在创建后会由数据库自动回收。而Oracle的全局临时表会一直存在,但是其中数据在提交后会全部清除。
5. 帮助文档
SQL Server提供详细的中文说明文档,但是Oracle本身并不提供中文说明文档。最起码说明在针对中国市场上,Oracle并不如SQL Server态度积极。
三、 数据库管理
1. Oracle是针对表空间和用户来进行管理,而SQL Server是以针对单独的数据库进行管理。换另一种说法也就是,Oracle的数据权限分配是以用户可以访问哪些表作为依据。而SQL Server是以特定数据库中哪些用户可以访问作为依据。
Oracle和SQLServer的主要区别
序号 Oracle 1.Oracle的参数文件init.ora是可调的,既我们可以根据数据库的规 模调整Oracle对系统资源的使用情况,以达到最合理的资源分配,让 Oracle达到最佳的性能。因此Oracle的性能优势体现在它的多用户 上,比较适用于访问量和并发用户数大的大型应用系统上。 2.游标是以提高速度全部统一的单项游标,可以允许多用户异步读 取,而且声明比较简单,就一句declare cursor游标名 is select 语句就可以了。 数据库性能 3.Oracle以块为最小存储单位,以区为单位分配空间,用户可以根据 需要自己定义块的大小,且区可以按等额或递增进行分配,这可以大 大减少系统的I/O操作提高数据库的性能。 4.ORACLE中用户可以根据数据需要在创建块时定义填充因子(空闲空 间的百分比)和复用因子(当块的存储数据所占的空间下降到这个百分 比之下时,块才重新标记为可用)。用户可以根据记录变化频率和数 据量的大小设置合适的填充因子和空闲因子。 Oracle的安全可靠性更高: 1.Oracle的数据字典和真实数据是分开存放的,不同的数据分别放在 不同的表空间,而且基表(存储系统参数信息)是加密存储,任何人都 无法访问,只能通过用户可视视图查看。安全性高。 2.在ORACLE里默认只有三个系统用户,ORACLE只能通过注册用户登入 安全性 。 3.Oracle的控制文件记录了数据库文件的物理位置和有效性,在每次 打开Oracle系统都将自动对数据进行验证,查看其有效性,防止数据 的丢失,这体现了Oracle对数据管理的严密性。 4.ORACLE在创建表时用户可以精确定义数据存放的表空间,甚至可以 把一张表分开存放在多个表空间中,这样可以将数据量庞大的表按某 Oralce可以很好地支持Windows、Linux等多种操作系统,跨平台性比 跨平台 较好 Oracle的存储结构是由块、区、段组成,可扩展性好,空间利用率 高,但是操作比较复杂: 1.ORACLE里有两个块参数PCTFREE(填充因子)和PCTUSED(复用因子), 块的大小可设置,这样可降低数据行连接与行迁移的可能性。 2.连续的块组成区,区的分配可以是等额的也可以是自增长的,这样 存储结构的不同 可以减少空间分配次数。 3.Oracle的表可以分为多个段,段由多个区组成,每个段可指定分配 在哪个表空间里,这样大大降低了磁盘争用的可能性。 4.Oracle的数据字典和真实数据是分开存放的,不同的数据分别放在 不同的表空间,而且基表(存储系统参数信息)是加密存储,任何人都 无法访问。只能通过用户可视视图查看。 1.ORACLE中容错类型有三种,分别是预定义错误、非预定义错误、用 户自定义,其中在自定义错误中SQLCODE 错误号、SQLERRM错误描述 是SQL Server没有的。 容错机制 2.Oracle提供了健全的错误机制,用户可以轻松的获得错误位置和错 误原因而加以修改。用户还可以自己定义所须的错误类型,用以检查 逻辑错误。 备份机制 ORACLE提供了7种备份机制,具有联机备份功能 Oracle的日志默认有3个,先写入1号日志,满了后再写入2号日志,2 号满了再写入3号日志,3号满了后Oracle将自动备分1号日志的内 容,然后清空后写入新的日志信息,且Oracle的日志有多路复用功 能,我们可以为日志创建多个镜像,把相同的日志信息同时写入多个 日志文件中,这样可以防止磁盘损坏造成的数据丢失。
【最新精选】SqlServerOracle数据类型,函数,导入导出对照
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常用函数对比宝藏解读
数学函数(S 表示sqlserver O表示oracle1.绝对值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.2346 6.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; 1 8.取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(SQLServer16.Asin,Acos,Atan,Atan2 返回弧度17.弧度角度互换(SQLServer,Oracle不知道 DEGREES:弧度-〉角度RADIANS:角度-〉弧度数值间比较18. 求集合最大值S:select max(value value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 valueaO:select greatest(1,-2,4,3 value from dual 19. 求集合最小值S:select min(value value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 valueaO:select least(1,-2,4,3 value from dual20.如何处理null值(F2中的null以10代替S:select F1,IsNull(F2,10 value from Tbl O: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 dual 39.取日期时间的其他部分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.3SELECT (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;。
SqlServer和Oracle,db2的区别
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 完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。
sqlserver与oracle差异汇总
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.修改表的列的数据类型,大小的定义不同,如下面修改数据类型。
Oracle和SQL_Server的语法区别
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与SQLSERVER语法区别
ORACLE与SQLSERVER语法区别⼀、数据类型ORACLE与SQL SERVER在数据类型的对⽐如下:SQL SERVER ORACLE数字类型DECIMAL[(P[, S])]NUMBER[(P[, S])]NUMERIC[(P[, S])]NUMBER[(P[, S])]FLOAT[(N)]NUMBER[(N)]INT NUMBERSMALLINT NUMBERTINYINT NUMBERMONEY NUMBER[19,4]SMALLMONEY NUMBER[19,4]字符类型CHAR[(N)]CHAR[(N)]VARCHAR[(N)]VARCHAR2[(N)]⽇期时间类型DATETIME DATESMALLDATETIME DATE其它TEXT CLOBIMAGE BLOBBIT NUMBER(1)⼆、表(主键、外键、CHECK、UNIQUE、DEFAULT、INDEX)在创建表及其主键、外键、CHECK、UNIQUE、DEFAULT、INDEX时,SQL SERVER 与ORACLE的语法⼤致相同。
主要区别如下:(1) Oracle定义表字段的default属性紧跟字段类型之后,如下:Create table MZ_Ghxx( ghlxh number primay key ,rq date default sysdate not null,….)⽽不能写成Create table MZ_Ghxx( ghlxh number primay key ,rq date not null default sysdate,….)三、存储过程/函数过程与函数的区别函数可以返回⼀个值给调⽤环境;⽽过程不能,过程只能通过返回参数(带“OUT”或“IN OUT”)传回去数据。
SQLSERVER中存储过程的结构⼤致如下CREATE PROCEDURE procedure_name/*输⼊、输出参数的声明部分*/ASDECLARE/*局部变量的声明部分*/BEGIN/*主体SQL语句部分*//*游标声明、使⽤语句在此部分*/ENDORACLE中存储过程的结构⼤致如下CREATE OR REPLACE PROCEDURE procedure_name( /*输⼊、输出参数的声明部分*/ )AS/*局部变量、游标等的声明部分*/BEGIN/*主体SQL语句部分*//*游标使⽤语句在此部分*/EXCEPTION/*异常处理部分*/END ;ORACLE端FUNCTION语法说明CREATE [OR REPLACE] FUNCTION function_name[(argument [{IN | OUT | IN OUT }] ) type,…[(argument [{IN | OUT | IN OUT }] ) typeRETURN return_type {IS | AS}BEGIN…END;四、变量赋值在SQL SERVER语句中⽤如下语句对局部变量赋值(初始值或数据库表的字段值或表达式):“SELECT 局部变量名 = 所赋值(初始值或数据库表的字段值或表达式)”;⽽在ORACLE中,将初始值赋给局部变量时,⽤如下语句:“局部变量名 : = 所赋值(初始值或表达式);” ,将检索出的字段值赋给局部变量时,⽤如下语句:“SELECT 数据库表的字段值 INTO 局部变量名 …” 。
ORACLE与SQL SERVER的SQL使用区别
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之魔兽争霸本人平时比较沉默,但朋友们都说我很疯狂—疯狂地学习、疯狂地工作。
很久就有写点东西的打算啦,一直懒于打字,近来稍有空闲,决定杜撰此文,献给现些喜欢或不喜欢沉默的朋友。
----自序网上已经有很多SQL与ORACLE的对比,但本人要讲的即不是单纯的SQL,也不是单纯的ORACLE,更不是评价谁好谁坏(意思不大),而是两种数据库之相同和异同,本人曾讲授过SQL与ORACLE的课程,讲SQL时说SQL好,讲ORACLE时又说ORACLE棒,现在终于可以平心而评啦。
估计有人现在会嘿嘿冷笑(又一个误人子弟的骗子),老实说,当初每次讲完课,就有这种感觉—教的人不得其法,学的人不得其道。
说点严肃的事吧,据说比尔与艾里森在洗手间相遇,两个又是拥抱,又是KISS,不多久就吵了起来,比尔对查询分析器(SQL QUERY ANALYZE)赞不经绝口,艾里森嘿嘿冷笑,只说了一句话—SQL PLUS内秀。
言归正传,且听我一一道来1.SQL与ORACLE的内存分配ORACLE的内存分配大部分是由INIT.ORA来决定的,一个数据库实例可以有N种分配方案,不同的应用(OLTP、OLAP)它的配置是有侧重的。
SQL概括起来说,只有两种内存分配方式:动态内存分配与静态内存分配,动态内存分配充许SQL自己调整需要的内存,静态内存分配限制了SQL对内存的使用。
1.002、SQL与ORACLE的物理结构总得讲,它们的物理结构很相似,SQL的数据库相当于ORACLE的模式(方案),SQL的文件组相当于ORACLE的表空间,作用都是均衡DISK I/O,SQL创建表时,可以指定表在不同的文件组,ORACLE则可以指定不同的表空间。
CREATE TABLE A001(ID DECIMAL(8,0)) ON [文件组]--------------------------------------------------------------------------------------------CREATE TABLE A001(ID NUMBER(8,0)) TABLESPACE 表空间注:以后所有示例,先SQL,后ORACLE2.003、SQL与ORACLE的日志模式SQL对日志的控制有三种恢复模型:SIMPLE、FULL、BULK-LOGGED;ORACLE对日志的控制有二种模式:NOARCHIVELOG、ARCHIVELOG。
oracle与sql server的主要用法和区别
for变量名in变量范围(start..end)
loop
…
end loop;
setserverouton;
declare
sumofaddint:=0;
intaddint:=0;
begin
forintaddin0..100
loop
sumofadd := sumofadd + intadd;
endloop;
begin
openmycursor(20);
loop
exitwhenmycursor%notfound;
fetchmycursorintoempname , empsal;
在saleCommodity表中生成触发器,在表store中实时更新库存量
createtriggersubtractRest
onsalecommodity
afterinsert
as
begin
declare@sale_quantityint
declare@restint
declare@comidint
fetchmycursorintoempname , empsal;
dbms_output.put_line('员工姓名:'|| empname ||'工资:'|| empsal);
endloop;
closemycursor;
end;
带参数的游标
1.声明游标
cursor(变量名变量类型(注意这里不能填入变量长度))游标名称isselect变量名1,变量名2…from表名
float:8个字节
datetime:8个字节表示时间
char():不足的长度用空格补上
Oracle和SQLServer的语法区别
Oracle和SQLServer的语法区别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 子句,实现相同的结果。
Oracle与Sql-Server函数对照
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与sqlserver日期函数对比
日期函数下面是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 返回跨两个指定日期的日期和时间边界数。
浅淡SqlServer的Top与Oracle的RowNum,MySQL的limit
平时的项目开发中,分页存储过程是用的比较多的存储过程,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和sqlserver查询语句
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的员工。
Oracle和SQLServer语法区别
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: 实际返回的行数超出请求的行数。
Oracle与SQLServer的SQL语法差异总结
idNUMBER(9)
)
oncommitdeleterows;
1、临时表是在执行数据库脚本会话过程中创建并使用,临时表名前面带有#号(或##全局临时表)
Eg:
createtable#WFMW02
(
paraidint,
vvalueVARCHAR(50),
flowidint,
变量
1、变量前不可加@符号
2、存储过程中变量声明不需要declare
Eg:
Codevarchar2(5);
3、变量类型可按表中字段类型动态定义
Eg:
V_id sysc01.id%type;
1、变量前需要加@符号
2、变量声明需要使用Declare关键字
Eg:
DECLARE@codevarchar(5);
IF…
Else
流控制
IF条件表达式then
{语句块}
Else
{语句块}
Endif;
IF条件表达式
{语句块}
Else
{语句块}
End
如果语句块中有多于1条SQL语句,则必须要使用begin…end构造
Case用法
1、表达式
Case表达式when匹配表达式then结果表达式1 else结果表达式2 end
存储过程参数
1、指定参数类型,但不指定长度
2、在参数及类型间要加入出标识(IN、OUT)
Eg:
task_remarkINVARCHAR2
prm_codeOUTNUMBER
1、指定参数类型,并要指定长度
2、对于出参需要在类型后面加OUTPUT(或OUT)
Eg:
@task_remarkVARCHAR(10)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQLServer和Oracle常用函数对比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:mi: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标准时间。