hs0811

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

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

 

 

分类:

技术点:

相关文章:

  • 2021-11-02
  • 2022-12-23
  • 2021-05-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-22
  • 2022-12-23
  • 2022-12-23
  • 2021-09-11
  • 2021-09-01
  • 2021-11-18
  • 2021-12-08
相关资源
相似解决方案