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)、时间间隔的乘除运算:

  日期是没有办法做乘除运算的,不过时间间隔可以乘以一个数字,或者除以一个数字。