`

(to_date、to_char) 用法总结

阅读更多
一、24小时的形式显示出来要用HH24

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;

select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;

二、to_date() function

1.日期格式参数含义说明

D一周中的星期几

DAY天的名字,使用空格填充到9个字符

DD月中的第几天

DDD年中的第几天

DY天的简写名

IW ISO标准的年中的第几周

IYYY ISO标准的四位年份

YYYY四位年份

YYY,YY,Y年份的最后三位,两位,一位

HH小时,按12小时计

HH24小时,按24小时计

MI分

SS秒

MM月

Mon月份的简写

Month月份的全名

W该月的第几个星期

WW年中的第几个星期     1.日期时间间隔操作

当前时间减去7分钟的时间

select sysdate,sysdate - interval '7' MINUTE from dual

当前时间减去7小时的时间

select sysdate - interval '7' hour from dual

当前时间减去7天的时间

select sysdate - interval '7' day from dual

当前时间减去7月的时间

select sysdate,sysdate - interval '7' month from dual

当前时间减去7年的时间

select sysdate,sysdate - interval '7' year from dual

时间间隔乘以一个数字

select sysdate,sysdate - 8 *interval '2' hour from dual

2.1.日期到字符操作

select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual

select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual

select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from dual

select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from dual

2.2.字符到日期操作

select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from dual

2.3.oracle有毫秒级的数据类型

--返回当前时间年月日小时分秒毫秒

select to_char(current_timestamp(5),'DD-MON-YYYY HH24:MI:SSxFF') from dual;

--返回当前时间的秒毫秒,可以指定秒后面的精度(最大=9)

select to_char(current_timestamp(9),'MI:SSxFF') from dual;

2.4.计算程序运行的时间(ms)

declare

type rc is ref cursor;

l_rc rc;

l_dummy all_objects.object_name%type;

l_start number default dbms_utility.get_time;

begin

for I in 1 .. 1000

loop

open l_rc for

'select object_name from all_objects '||

'where object_id = ' || i;

fetch l_rc into l_dummy;

close l_rc;

end loop;

dbms_output.put_line

( round( (dbms_utility.get_time-l_start)/100, 2 ) ||

' seconds...' );

end;

三、to_char() function

The following are number examples for theto_charfunction.

to_char(1210.73, '9999.9')

would return '1210.7'

to_char(1210.73, '9,999.99')

would return '1,210.73'

to_char(1210.73, '$9,999.00')

would return '$1,210.73'

to_char(21, '000099')

would return '000021'

The following is a list of valid parameters when theto_charfunction is used to convert a date to a string. These parameters can be used in many combinations.

Parameter

Explanation

YEAR

Year, spelled out

YYYY

4-digit year

YYY
YY
Y

Last 3, 2, or 1 digit(s) of year.

IYY
IY
I

Last 3, 2, or 1 digit(s) of ISO year.

IYYY

4-digit year based on the ISO standard

Q

Quarter of year (1, 2, 3, 4; JAN-MAR = 1).

MM

Month (01-12; JAN = 01).

MON

Abbreviated name of month.

MONTH

Name of month, padded with blanks to length of 9 characters.

RM

Roman numeral month (I-XII; JAN = I).

WW

Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year.

W

Week of month (1-5) where week 1 starts on the first day of the month and ends on the seventh.

IW

Week of year (1-52 or 1-53) based on the ISO standard.

D

Day of week (1-7).

DAY

Name of day.

DD

Day of month (1-31).

DDD

Day of year (1-366).

DY

Abbreviated name of day.

J

Julian day; the number of days since January 1, 4712 BC.

HH

Hour of day (1-12).

HH12

Hour of day (1-12).

HH24

Hour of day (0-23).

MI

Minute (0-59).

SS

Second (0-59).

SSSSS

Seconds past midnight (0-86399).

FF

Fractional seconds.



The following are date examples for theto_charfunction.

to_char(sysdate, 'yyyy/mm/dd');

would return '2003/07/09'

to_char(sysdate, 'Month DD, YYYY');

would return 'July 09, 2003'

to_char(sysdate, 'FMMonth DD, YYYY');

would return 'July 9, 2003'

to_char(sysdate, 'MON DDth, YYYY');

would return 'JUL 09TH, 2003'

to_char(sysdate, 'FMMON DDth, YYYY');

would return 'JUL 9TH, 2003'

to_char(sysdate, 'FMMon ddth, YYYY');

would return 'Jul 9th, 2003'



You will notice that in some examples, theformat_maskparameter begins with "FM". This means that zeros and blanks are suppressed. This can be seen in the examples below.

to_char(sysdate, 'FMMonth DD, YYYY');

would return 'July 9, 2003'

to_char(sysdate, 'FMMON DDth, YYYY');

would return 'JUL 9TH, 2003'

to_char(sysdate, 'FMMon ddth, YYYY');

would return 'Jul 9th, 2003'

The zeros have been suppressed so that the day component shows as "9" as opposed to "09".

四、Oracle函数to_char转化数字型指定小数点位数的用法

to_char,函数功能,就是将数值型或者日期型转化为字符型。

比如最简单的应用:

/*1.0123--->'1.0123'*/
Select TO_CHAR(1.0123) FROM DUAL
/*123--->'123'*/
Select TO_CHAR(123) FROM DUAL

接下来再看看下面:

/*0.123 ---> '.123' */
SELEC TO_CHAR(0.123) FROM DUAL

上面的结果'.123'在大多数情况下都不是我们想要的结果,我们想要的应该是'0.123'。

我们来看一下to_char函数的具体用法:

TO_CHAR ( n [, fmt [, 'nlsparam']] )

该函数将NUMBER类型的n按数值格式fmt转换成VARCHAR2类型的值。'nlsparams'指定由数值格式的元素返回的字符,包括:

.小数点字符

.组分隔符

.本地钱币符号

.国际钱币符号

变元的形式为:

'NLS_NUMERIC_CHARACTERS="dg" NLS_CURRENCY="tcxt" NLS_ISO_CURRENCY=territory'

其中d为小数点字符,g为组分隔符。

例 :TO_CHAR (17145,'L099G999','NLS_NUMERIC_CHARACTERS=".," NLS_CURRENCY="NUD"')=NUD017,145

通过上面的了解,再查看fmt的一些格式,我们可以用以下表达式得到'0.123'的值:

/*0.123 ---> ' 0.123' */
Select TO_CHAR(0.123,'0.999') FROM DUAL
/*100.12 ---> '######' */
Select TO_CHAR(100.12,'0.999') FROM DUAL
/*1.12 ---> ' 1.120' */
Select TO_CHAR(1.12,'0.999') FROM DUAL

' 0.123'是出来了,可是前面又多了一个空格。

对于100.12的值却是######,以及'1.12'的值变成了'1.120'。

我们重新确定一个新的需求:

1、去空格

2、小数点最多4位,最少保留2位。

    1--->'1.00';1.1--->'1.00';1.12-->'1.12';1.1234--->'1.1234';

    1.12345--->'1.1235'

最终实现如下:

/*
  FM :除空格 
  9999999.0099:允许小数点左边最大正数为7位,小数点右边最少2位,最多4位,且在第5位进行四舍五入
*/
Select TO_CHAR(123.0233,'FM9999999.0099') FROM DUAL

五、PLSQL小经验http://hi.baidu.com/seekbug/blog/item/f523934513b9dd3d87947337.html

一、Oracle的to_char()函数功能很强大但是在用它格式化数值型数据时应该请注意以下几项。如果是小数如:0.23这样的数据经过to_char后再显示会变为.23,如果你为了让它显示出原来的0.23的话就得用To_char(要格式化的数值,’0.999’)保留三个小数,并显示但这里就要注意了。他为你截取小数的时候是四舍五入了。所以如果是要求截掉小数而不四舍五入的话就应该自己写个函数截下去后再规格化。以保证它不四舍五入。

二、To_char(1.9999,’FM90.0999’)这个函数规格化时90.0999的含义是有9的地方如果有数字就显示如果没有数字就不显示,有0的地方在没有数字的时候也会有0来占位.但这样做也有一个很大的缺点,就是如果是整数时它也仍然会显示”.”,不要小瞧这个点,一般来讲页面上要显示的话这个点就是多余的.也给我们造成了不小的麻烦.还要自己再写函数来把这个小点搞定.

三、对于日期型的Oracle倒时提供了一个好的处理方法,可以把日期做成数值型的.然后再To_char就能显示出你所需要的类型了.

四、在使用select into时一定要注意,这种方法你一定要确认肯定会有数据被查出时才能使用.如果查询结果为空时会导致报错.还有一种情况是查出来的数据是多条也会报错.所以应该尽量便宜游标来做.会减少错误产生的机率.

五、还有注意一点rownum不支持排序,就是说你想用这个来控制行数的话就会发现他没有按你指定的排序方式显示.,这是一个很难办的事.而且如果你用rownum=2这样的语句来输出第二行的话也是行不通的.六、最恶心的一点是Oracle对null的判断变态到极点.如果你说某个变量aa=null它是判断不出来的.尽管aa的确是空.即使在选择条件里也是判断不出来的.不知道为什么,只好用nvl()这个函数来判断了.在条件之外可以用aa is null来判断.

六补充一点.就是在写存储过程时要注意参数名不能与数据库字段名相同.否则Oracle会把这个参数名看成是字段名的,即使你用表的别名区分也不行.所以起参数名的时候一定要注意这点了。
分享到:
评论

相关推荐

    Oracle 中的 TO_DATE 和 TO_CHAR 函数

    ### Oracle中的TO_DATE和TO_...以上就是Oracle数据库中`TO_DATE`和`TO_CHAR`函数的基本使用方法及相关知识点的详细介绍。这两个函数在处理日期和时间数据时非常有用,能够帮助开发者和DBA更加灵活地操作和展示数据。

    Oracle中TO_DATE TO_CHAR格式

    在本文中,我们将详细介绍 TO_DATE 和 TO_CHAR 函数的属性和使用方法。 一、TO_DATE 函数 TO_DATE 函数用于将字符串类型的日期时间数据转换为 DATE 类型。其基本语法为: ```sql TO_DATE(string, format) ``` 其中...

    oracle-sql基本语法例子,包括to_date,to_char

    总结的sql语法,其中包括一些函数的用法,to_date,to_char,to_number等等函数

    Oracle to_date() 用法细节.txt

    本文将详细介绍 `to_date()` 的使用方法、参数格式以及常见问题解决方法。 #### 二、基本语法与格式 `to_date()` 函数的基本语法如下: ```sql TO_DATE (expression, format_mask) ``` 其中: - `expression`: ...

    TO_DATE用法详解.doc

    TO_DATE 函数用法详解 TO_DATE 函数是 Oracle 中的一个重要函数,它用于将字符类型的日期字符串转换为日期类型的数据。该函数的语法为:TO_DATE(date_string, format_string),其中 date_string 是要转换的日期字符...

    Oracle中TO_DATE、TO_CHAR,Oracle函数大全

    总之,Oracle的`TO_DATE` 和 `TO_CHAR` 函数是数据库操作中必不可少的部分,理解并熟练使用它们以及其他的Oracle函数,可以极大地提高数据处理的效率和准确性。通过不断学习和实践,可以深入掌握这些函数的用法,...

    ORACLE 关于时间函数to_date 的运用

    在Oracle数据库中,时间函数是处理日期和时间数据的...掌握`TO_DATE`函数的用法对于进行复杂的时间数据分析和报表生成具有重要意义。在实际应用中,还需注意时区和本地化设置的影响,以确保日期数据的准确性和一致性。

    Oracle的to_date函数.doc

    在使用 to_date 函数时,需要指定日期字符串的格式,以便 Oracle 能够正确地解析日期字符串。日期格式参数是用来指定日期字符串的格式的,它由一个或多个日期元素组成,每个日期元素都有其特定的含义。 以下是 ...

    Oracle to_char(date)用法总结

    Oracle to_char(date) 用法总结 Oracle 的数据类型转换是指将一种数据类型转换为另一种数据类型,以满足不同的应用场景。在 Oracle 中,数据类型转换可以分为显式数据类型转换和隐式数据类型转换。隐式数据类型转换...

    oracle中to_date详细用法示例(oracle日期格式转换)

    总结起来,`TO_DATE`和`TO_CHAR`函数是Oracle数据库处理日期和时间数据的核心工具,它们可以轻松地将日期和字符串进行转换,同时支持多种格式模型和语言设置,满足各种日期处理需求。在实际使用中,应根据具体需求...

    讲述Oracle中的to_date参数含义

    Oracle数据库中的`to_date`函数是用于将字符串转换为日期数据类型的函数,它在处理日期和时间相关的操作时非常常用。`to_date`的主要参数是一个包含日期信息的字符串,以及一个可选的日期格式模型,用于指定输入字符...

    Oracle 中的 TO-DATE 和 TO-CHAR 函数.docx

    本文将详细介绍 TO_DATE 和 TO_CHAR 函数的使用方法、格式化规则和实践应用。 一、TO_DATE 函数 TO_DATE 函数是将字符类型的日期字符串转换为 DATE 类型的日期对象。其基本语法为: `TO_DATE( string1, [ format_...

    Oracle to_date()函数的用法介绍

    在Oracle数据库中,Oracle to_date()函数是我们经常使用的函数,下面就为您详细介绍Oracle to_date()函数的用法,希望可以对您有所启迪。 to_date()与24小时制表示法及mm分钟的显示: 一、在使用Oracle的to_date函数...

    Oracle中To-date用法.pdf

    Oracle 中 TO_DATE 函数用法 Oracle 中 TO_DATE 函数是将字符字符串转换为日期类型的函数。TO_DATE 函数的格式为 `TO_DATE( string, format )`,其中 `string` 是要转换的字符字符串,`format` 是日期格式字符串。 ...

    Oracle TO-DATE 日期格式大全.docx

    * 获取某天是星期几:`SELECT TO_CHAR(TO_DATE('2002-08-26', 'yyyy-mm-dd'), 'day') FROM DUAL;` * 设置日期语言:`ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';` * 计算两个日期之间的天数:`SELECT FLOOR...

    单元十一:数据类型的显式转换TODATE(1)完美版资料.pptx

    该函数的语法为 TO_DATE(char[, 'fmt']),其中 char 是要转换的字符串,fmt 是可选的格式字符串。 TO_DATE 函数的作用是将字符串转换为日期型数据,以便在数据库中存储和操作日期型数据。例如,在员工信息表中,...

Global site tag (gtag.js) - Google Analytics