4、日期时间转换。
1)、从字符串到日期:
To_Date(string,[format_mask],[nls_language]),把一个字符串转换成Data类型值,如:To_Date('12/25/2005','mm/dd/yyyy')。
To_Date(number,[format_mask],[nls_language]),把一个Julian日期的数字转换为Date类型,如:
To_TimeStamp(string,[format_mask],[nls_language]),把字符串转换为TimeStamp类型。如:To_TimeStamp('06/2/2002 09:00:00.20')
To_TimeStamp_TZ(string,[formate_mask],[nls_language]),把字符串转换为TimeStamp with Time Zone类型的值,或者转换为Timestamp with local Time zone 类型的值。如:To_TimeStamp_TZ('06/2/2001 09:00:00.04 PM EST','mm/dd/yyyy hh:mi:ssxff AM TZD').
2)、从日期时间到字符串:
To_Char(date_in IN DATE ,[format_max IN VARCHAR2],[nls_language IN VARCHAR2])
如:To_Char(sysdate,'Month DD,YYYY')------'February 05, 1994'
To_Char(sysDate,'MON DDth,YYYY')----------'FEB 05TH,1994'用FM填充模式元素,去掉空格和0.
To_Char(sysDate,'fmMon DDth,YYYY')----------'Feb 5TH,1994',TH格式是大写规则,就算格式字符中是小写th,数据库输出时也大写“TH”。
3)、使用时区:
To_TimeStamp_TZ('12312005 083015.55 -5:00',MMDDYY HHMISS.FF TZH:TZM'),其中‘-5:00’解析成美国东部标准时间,
To_TimeStamp_TZ('01-Nov-2009 01:30:00 EST','dd-Mon-yyyy hh:mi:ss TZR'),美国东部时区时间。
4)、精确匹配需要格式掩码:
使用修饰符Fx,对于字符串的解释就不再灵活,格式模型中指明了额外的位,数字就必须前面加0补齐,如:
To_Date('1-1-4','fxDD-MM-YYYY'),To_Date('7/16/94','FXMM/DD/YY'),To_Date('JANUARY^1^ the year of 94','FXMonth-dd-"whatIsaynotdo"yy'),这些都是不正确的转换格式,都会报错误。
5)、让精确匹配更容易:
To_Date('07-1-94','FXfmDD-FXMM-FXYYYY') 这个可以转换成功,0094年07月01日。
fm可以来对一个字符串用空格或0补齐,可以让fx检测无法通过的验证通过。
6)、解释滑动窗口中的两位数字的年份:
5、时期和时间戳直接量。
格式:Date 'YYYY-MM-DD' TimeStamp 'YYYY-MM-DD HH:MI:SS[.FFFFFFFFF] [{+|-}HH:MI]'
如:Declare
ts1 TimeStamp with time zone;
ts2 TimeStamp with time zone;
ts3 TimeStamp with time zone;
ts4 TimeStamp with time zone;
ts5 Date;
Begin
ts1:=TimeStamp '2002-02-19 11:52:00.00 -05:00'
ts2:=TimeStamp '2002-02-19 14:00:00.000000000 -5:00'
ts3:=TimeStamp '2002-02-19 13:52:00 -5:00'
ts4:=TimeStamp '2002-02-19 13:52:00';
ts5:=Date '2001-02-19';
end
6、时间间隔的转换。
1)、从数字到时间间隔的转换:
NumToYMInterval,把一个数字转换为Interval Year To Month格式,如:NumToYMInterval(10.5,'year'),10.5年,转换后变成:+10-06,10年又6个月。
NumToDSIntervale 把一个数字转换为Interval Day 通Second格式,如:NumToDSInterval(1440,'minute'),1440分钟转换后变成:+01 00:00:00.00000,1天0小时0分钟0秒。
2)、把字符串转换成间隔
To_YMInterval函数,把字符串转换为Interval Year To month 格式,如:To_YMInterval('40-3').
To_DSInterval函数,把字符串转换为Interval Year To Month格式,如:To_DSInterval('10 1:00:20'),To_DSInterval('10 1:00:50.002').
3)、时间间隔的格式化显示。
To_Char 函数会把所有时间格式忽略的,如:To_Char(Interval '40-3' year to month,'YY "Years" and MM "Months"') ----+000040-03
7、时间间隔直接量。
和时间戳直接量一样,格式如下:Interval 'character_representation' start_element TO end_element。
如:Interval '40-3' Year To Month,Interval '40' Year,(结束元素没有),Interval '1:02' Hour To Minute,Interval '10 1:00:10.002' Day To Second.
8、CAST 和Extract。
1)、Cast函数:和SQL server中的Cast函数类似。
2)、Extract函数:用户从一个日期时间值中提取日期部分。
Extract (component_name ,From {dateTime | Interval})
如:Extract(Month from SysDate)----提取当期日期的月份。
Extract(hour from sysDate)---提取当期日期时间的小时部分。
componect_name 可以为:Year、Month、Day、Hour、Minute、Second、TimeZone_Hour、TimeZone_Minute、TimeZone_Region,TimeZone_Abbr.
9、日期时间的算法。
1)、时间间隔和日期时间的算法:
可以通过Interval ....的时间间隔进行运算,如:当前时间加上 1500天 4小时 30分 30秒,表示成:sysTimeStamp + Interval ('1500 4:30:30') Day to Second.不过值得注意的是对月份的操作,比如5月31日,加上一个月,就是6月31日,显然不正确,Add_Months函数的使用要注意这一点,同样时间按年添加的时候,注意2月29号的区别,否则会报错。
2)、DATE数据类型的日期算法:
Date类型,只有日期部分,所以算法都是按日进行计算的。如:今天加一天:Sysdate +1,今天加4小时:sysdate+4/24.都是按照天为单位的计算。
3)、计算两个日期时间之间的时间间隔:
计算两个TimeStamp类型之间的间隔,只要简单的相减,结果是Interval Day TO Second 类型。
两个Date类型的数据,相减得到的是一个数字,代表着多少个24个小时,如果结果是整数,代表多少天,如果是小数,不仅代表着天还有小时分钟和秒。
4)、Date和TimeStamp类型混合运算:
混合使用Date和TimeStamp类型,PL/SQL会自动把Date类型转换为TimeStamp类型进行处理。
5)、时间间隔的加减运算:
进行加减运算的时间间隔必须是类型相同的,同是Interval Day To Second 或者Interval Year To Month。
注意:两个Date 类型的之间的间隔是用Number来表示的,就是因为月份的不同造成的。
6)、时间间隔的乘除运算:
日期是没有办法做乘除运算的,不过时间间隔可以乘以一个数字,或者除以一个数字。