Oracle to_char格式化函数

1

Oracle to_char格式化函数

Postgres 格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。

注意:所有格式化函数的第二个参数是用于转换的模板。

表 5-7. 格式化函数

函数 返回 描述 例子

to_char(timestamp, text) text 把 timestamp 转换成 string to_char(timestamp 'now','HH12:MI:SS')

to_char(int, text) text 把 int4/int8 转换成 string to_char(125, '999')

to_char(float, text) text 把 float4/float8 转换成 string to_char(125.8, '999D9')

to_char(numeric, text) text 把 numeric 转换成 string to_char(numeric '-125.8', '999D99S')

to_date(text, text) date 把 string 转换成 date to_date('05 Dec 2000', 'DD Mon YYYY')

to_timestamp(text, text) date 把 string 转换成 timestamp to_timestamp('05 Dec 2000', 'DD Mon YYYY')

to_number(text, text) numeric 把 string 转换成 numeric to_number('12,454.8-', '99G999D9S')

表 5-8. 用于 date/time 转换的模板

模板 描述

HH 一天的小时数 (01-12)

HH12 一天的小时数 (01-12)

HH24 一天的小时数 (00-23)

MI 分钟 (00-59)

SS 秒 (00-59)

SSSS 午夜后的秒 (0-86399)

AM or A.M. or PM or P.M. 正午标识(大写)

am or a.m. or pm or p.m. 正午标识(小写)

Y,YYY 带逗号的年(4 和更多位)

YYYY 年(4和更多位)

YYY 年的后三位

YY 年的后两位

Y 年的最后一位

BC or B.C. or AD or A.D. 年标识(大写)

bc or b.c. or ad or a.d. 年标识(小写)

MONTH 全长大写月份名(9字符)

Month 全长混合大小写月份名(9字符)

month 全长小写月份名(9字符)

MON 大写缩写月份名(3字符)

Mon 缩写混合大小写月份名(3字符)

mon 小写缩写月份名(3字符)

MM 月份 (01-12)

DAY 全长大写日期名(9字符)

Day 全长混合大小写日期名(9字符)

day 全长小写日期名(9字符) 2

DY 缩写大写日期名(3字符)

Dy 缩写混合大小写日期名(3字符)

dy 缩写小写日期名(3字符)

DDD 一年里的日子(001-366)

DD 一个月里的日子(01-31)

D 一周里的日子(1-7;SUN=1)

W 一个月里的周数

WW 一年里的周数

CC 世纪(2 位)

J Julian 日期(自公元前4712年1月1日来的日期)

Q 季度

RM 罗马数字的月份(I-XII;I=JAN)-大写

rm 罗马数字的月份(I-XII;I=JAN)-小写

所有模板都都允许使用前缀和后缀修改器。模板里总是允许使用修改器。前缀 'FX' 只是一个全局修改器。

表 5-9. 用于日期/时间模板 to_char() 的后缀

后缀 描述 例子

FM 填充模式前缀 FMMonth

TH 大写顺序数后缀 DDTH

th 小写顺序数后缀 DDTH

FX 固定模式全局选项(见下面) FX Month DD Day

SP 拼写模式(还未实现) DDSP

用法须知:

如果没有使用 FX 选项,to_timestamp 和 to_date 忽略空白。FX 必须做为模板里的第一个条目声明。

反斜杠("\")必须用做双反斜杠("\\"),例如 '\\HH\\MI\\SS'。

双引号('"')之间的字串被忽略并且不被分析。如果你想向输出写双引号,你必须在双引号前面放置一个双反斜杠('\\'),例如 '\\"YYYY Month\\"'。

to_char 支持不带前导双引号('"')的文本,但是在双引号之间的任何字串会被迅速处理并且还保证不会被当作模板关键字解释(例如:'"Hello Year: "YYYY')。

表 5-10. 用于 to_char(numeric) 的模板

模板 描述

9 带有指定位数的值

0 前导零的值

. (句点) 小数点

, (逗号) 分组(千)分隔符

PR 尖括号内负值

S 带负号的负值(使用本地化)

L 货币符号(使用本地化)

D 小数点(使用本地化) 3

G 分组分隔符(使用本地化)

MI 在指明的位置的负号(如果数字 < 0)

PL 在指明的位置的正号(如果数字 > 0)

SG 在指明的位置的正/负号

RN 罗马数字(输入在 1 和 3999 之间)

TH or th 转换成序数

V 移动 n 位(小数)(参阅注解)

EEEE 科学记数。现在不支持。

用法须知:

使用 'SG','PL' 或 'MI' 的带符号字并不附着在数字上面;例如,to_char(-12, 'S9999') 生成 ' -12',而

to_char(-12, 'MI9999') 生成 '- 12'。Oracle 里的实现不允许在 9 前面使用 MI,而是要求 9 在 MI 前面。

PL,SG,和 TH 是 Postgres 扩展。

9 表明一个与在 9 字串里面的一样的数字位数。如果没有可用的数字,那么使用一个空白(空格)。

TH 不转换小于零的值,也不转换小数。TH 是一个 Postgres 扩展。

V 方便地把输入值乘以 10^n,这里 n 是跟在 V 后面的数字。to_char 不支持把 V 与一个小数点绑在一起使用(例如. "99.9V99" 是不允许的)。

表 5-11. to_char 例子

输入 输出

to_char(now(),'Day, HH12:MI:SS') 'Tuesday , 05:39:18'

to_char(now(),'FMDay, HH12:MI:SS') 'Tuesday, 05:39:18'

to_char(-0.1,'99.99') ' -.10'

to_char(-0.1,'FM9.99') '-.1'

to_char(0.1,'0.9') ' 0.1'

to_char(12,'9990999.9') ' 0012.0'

to_char(12,'FM9990999.9') '0012'

to_char(485,'999') ' 485'

to_char(-485,'999') '-485'

to_char(485,'9 9 9') ' 4 8 5'

to_char(1485,'9,999') ' 1,485'

to_char(1485,'9G999') ' 1 485'

to_char(148.5,'999.999') ' 148.500'

to_char(148.5,'999D999') ' 148,500'

to_char(3148.5,'9G999D999') ' 3 148,500'

to_char(-485,'999S') '485-'

to_char(-485,'999MI') '485-'

to_char(485,'999MI') '485'

to_char(485,'PL999') '+485'

to_char(485,'SG999') '+485'

to_char(-485,'SG999') '-485'

to_char(-485,'9SG99') '4-85'

to_char(-485,'999PR') '<485>'

to_char(485,'L999') 'DM 485 4

to_char(485,'RN') ' CDLXXXV'

to_char(485,'FMRN') 'CDLXXXV'

to_char(5.2,'FMRN') V

to_char(482,'999th') ' 482nd'

to_char(485, '"Good number:"999') 'Good number: 485'

to_char(485.8,'"Pre-decimal:"999" Post-decimal:" .999') 'Pre-decimal: 485 Post-decimal: .800'

to_char(12,'99V999') ' 12000'

to_char(12.4,'99V999') ' 12400'

to_char(12.45, '99V9') ' 125'

合集下载

to_char详解

to_char详解

格式元素元素说明格式数字字符结果9数字宽度999912120显⽰前⾯的00999120012.⼩数点的位置099.9902.4002.40D⼩数分割点的位置099D9909.9009.90,逗号的位置099,99909080009,080G组分隔符的位置099G99909080009,080$美元符号$0999$009

L当地货币L0999GBP009

(如果nls_currency设置为GBP)MI表⽰复数的减号的位置9999MI-98769876-PR包围在括号内的负数999PR-98<98>EEEE科学计数法99.99EEEE121.976

Unls_dual_currencyU009993040CAD03040

(如果nls_dual_currency设置为CAD)V乘以10n次(n是V之后9的数量)99999V993040304000S前⾯加上+或者-S9999993040+3040to_char详解

对TO_CHAR的讨论可以分为从两种类型的数据到字符的转换:DATE和NUMBER。

TO_CHAR函数返回VARCHAR2数据类型的值。

1. NUMBER TO CHAR

语法: TO_CHAR(num,[format])

例:SQL> select to_char(001)||'is a special number' from dual;

TO_CHAR(001)||'ISASP--------------------1is a special number

SQL> select to_char(0001,'09999999') from dual;

TO_CHAR(0--------- 00000001

数字格式掩码

SQL> select to_char(87,'999PR') from dual;

TO_CH----- 87

SQL> select to_char(-87,'999PR') from dual;

to_char用法

to_char用法

to_char用法

to_char是一个SQL函数,用于将数值、日期、时间等数据类型转换为字符类型。其语法如下:

TO_CHAR(value, format)

其中:

- value:要转换的数值、日期、时间等数据类型

- format:目标字符类型格式

以下是to_char的用法举例:

1. 将日期类型转成字符类型

```sql

SELECT TO_CHAR(sysdate, 'YYYY-MM-DD') AS current_date

FROM dual;

```

输出结果:

```

CURRENT_DATE

-------------------

2022-12-21

```

2. 将数字转成字符类型

```sql

SELECT TO_CHAR(1234.56, 'L99G999D99MI') AS

num_to_char FROM dual;

```

输出结果:

```

NUM_TO_CHAR

-------------------

$ 1,234.56-

```

其中L代表带有货币符号的,99和999表示数字最大位数是两位和三位,D是小数点,MI代表负数符号。

3. 将时间类型转换为字符类型

```sql

SELECT TO_CHAR(sysdate, 'HH24:MI:SS') AS current_time

FROM dual;

```

输出结果:

```

CURRENT_TIME

-------------------

10:48:22 ```

4. 将日期和时间类型转成字符类型

```sql

SELECT TO_CHAR(sysdate, 'YYYY-MM-DD HH24:MI:SS') AS

current_date_time FROM dual;

```

输出结果:

```

CURRENT_DATE_TIME

-------------------

2022-12-21 10:48:22

转,Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数

转,Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数

转,Oracle中关于处理⼩数点位数的⼏个函数,取⼩数位数,Oracle查询函数

关于处理⼩数点位数的⼏个oracle函数()1. 取四舍五⼊的⼏位⼩数

select round(1.2345, 3) from dual;

结果:1.2352. 保留两位⼩数,只舍

select trunc(1.2345, 2) from dual;

结果:1.23

select trunc(1.2399, 2) from dual;

结果:1.233.取整数

返回⼤于或等于x的最⼤整数: SQL> select ceil(23.33) from dual;

结果: 24

返回等于或⼩于x的最⼤整数: SQL> select floor(23.33) from dual;

结果: 23

返回舍⼊到⼩数点右边y位的x值:rcund(x,[y]) SQL> select round(23.33) from dual;

结果: 23

返回截尾到y位⼩数的x值:trunc(x,[y]) SQL> select trunc(23.33) from dual;

结果: 23

格式化数字

 The following are number examples for the to_char function.

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'

to_char函数特殊⽤法

to_char(sysdate,'d') 每周第⼏天

to_char(sysdate,'dd') 每⽉第⼏天

to_char(sysdate,'ddd') 每年第⼏天

sql数字类型转换为字符串类型的方法

sql数字类型转换为字符串类型的方法

SQL数字类型转换为字符串类型的方法主要是通过SQL中的内置函数来实现的。在数据库查询中,有时候我们需要将数字类型的数据转换为字符串类型,比如将数字型的ID转换为字符串类型的ID,或者将数字型的金额字段转换为带有千位分隔符的字符串类型。下面我们将介绍几种常用的方法来实现这种类型的转换。

1. 使用CAST或CONVERT函数

在SQL中,可以使用CAST或CONVERT函数来将数字类型转换为字符串类型。这两个函数的语法类似,例如:

```

SELECT CAST(123 as VARCHAR(10))

```

或者

```

SELECT CONVERT(VARCHAR, 123)

```

这样就可以将数字123转换为字符串类型的"123"。

2. 使用字符串拼接符号

另一种常见的方法是使用字符串拼接符号,将数字类型的字段直接与空字符串相加,这样也可以将数字转换为字符串,例如:

```

SELECT 123 + '' ```

这样同样可以将数字123转换为字符串类型的"123"。

3. 使用TO_CHAR函数(针对Oracle数据库)

如果是在Oracle数据库中进行数字类型到字符串类型的转换,可以使用TO_CHAR函数,例如:

```

SELECT TO_CHAR(123)

```

4. 使用CONCAT函数

在一些数据库中,还可以使用CONCAT函数来将数字类型转换为字符串类型,例如:

```

SELECT CONCAT(123)

```

5. 附加格式化参数

在一些情况下,我们需要对转换后的字符串进行格式化,比如保留小数位数或添加千位分隔符。这时候可以在上述函数中加入参数来实现格式化,例如:

```

SELECT FORMAT(123, 'N2') ```

这样可以将数字123转换为带有两位小数的格式化后的字符串。

在实际的开发中,根据具体的数据库类型和需求,我们可以选择合适的方法来将数字类型转换为字符串类型。在使用这些方法时,需要注意数据的精度和格式化要求,避免出现数据丢失或格式错误的情况。

to_char作为条件的查询语句

to_char作为条件的查询语句

to_char作为条件的查询语句

1. 引言

在数据库查询中,条件查询是经常用到的一种查询方式。而to_char函数在Oracle数据库中常用来将其他数据类型转换成字符型。本文将介绍如何使用to_char函数作为条件进行查询。

2. 查询条件的基本语法

to_char函数可以将各种数据类型转换成字符型。在查询语句中,我们可以使用to_char函数来筛选满足指定条件的记录。

2.1 基本语法

使用to_char函数作为查询条件的基本语法如下所示:

SELECT*

FROMtable_name

WHEREto_char(column_name,'format_mask')condition;

其中,table_name是要查询的表名,column_name是要查询的列名,format_mask是指定日期或数字转换的格式,condition是指定的查询条件。

2.2 日期查询示例

假设我们有一个名为`sales`的表,其中包含了销售日期和销售金额两列。我们可以使用to_char函数来查询某个日期范围内的销售记录。

例如,我们要查询2021年10月份的销售数据,可以使用以下查询语句:

SELECT*

FROMsales

WHEREto_char(sale_date,'YYYY-MM')='2021-10'; 这条查询语句将返回符合条件的所有记录。

2.3 数字查询示例

除了日期查询外,to_char函数还可以用于数字查询。例如,我们要查询销售金额在特定范围内的记录,可以使用以下查询语句:

SELECT*

FROMsales

WHEREto_char(sale_amount,'FM9999.99')BETWEEN'1000.00'AND'2000.00';

这条查询语句将返回销售金额在1000到2000之间的记录。

3. to_char函数的常用格式控制符

在使用to_char函数时,我们可以通过指定不同的格式控制符来实现不同的转换效果。

oracle数据类型详解---日期型(转载)

oracle数据类型详解---日期型(转载)

oracle数据类型详解---⽇期型(转载)

oracle 数据类型详解---⽇期型

oracle数据类型看起来⾮常简单,但⽤起来会发现有许多知识点,本⽂是我对ORACLE⽇期数据类型的⼀些整理,都是开发⼊门资料,

与⼤家分享:

注:由于INTERVAL及TIME ZONE实际⽤得⽐较少,所以本⽂内容未涉及这两个⽅⾯。

1、常⽤⽇期型数据类型

1.1、DATE

这是ORACLE最常⽤的⽇期类型,它可以保存⽇期和时间,常⽤⽇期处理都可以采⽤这种类型。DATE表⽰的⽇期范围可以是公元前4712年1⽉1⽇⾄公元9999年12⽉31⽇

date类型在数据库中的存储固定为7个字节,格式为:

第1字节:世纪+100

第2字节:年

第3字节:⽉

第4字节:天

第5字节:⼩时+1

第6字节:分+1

第7字节:秒+1

1.2、TIMESTAMP(p)

这也是ORACLE常⽤的⽇期类型,它与date的区别是不仅可以保存⽇期和时间,还能保存⼩数秒,⼩数位数可以指定为0-9,默认为6位,所

以最⾼精度可以到ns(纳秒),数据库内部⽤7或者11个字节存储,如果精度为0,则⽤7字节存储,与date类型功能相同,如果精度⼤于0则⽤11字节存储。

格式为: 第1字节:世纪+100

第2字节:年

第3字节:⽉

第4字节:天

第5字节:⼩时+1

第6字节:分+1

第7字节:秒+1

第8-11字节:纳秒,采⽤4个字节存储,内部运算类型为整形

注:TIMESTAMP⽇期类型如果与数值进⾏加减运算会⾃动转换为DATE型,也就是说⼩数秒会⾃动去除。

1.3、DATE与TIMESTAMP类型内部存储验证

1 create table T 2 ( 3 C1 DATE, 4 C2 TIMESTAMP(9) 5 ); 6 7 insert into t(c1,c2) values(date'2010-2-12',timestamp'2010-2-12 13:24:52.234123211'); 8 insert into t(c1,c2) values( 9 to_date('2010-2-12 10:20:30','YYYY-MM-DD HH24:MI:SS'),10 to_timestamp('2010-2-12 13:24:52.123456','YYYY-MM-DD HH24:MI:SS.FF6')11 );12 13 SQL> select c1,dump(c1) c1_d,c2,dump(c2) c2_d from t;

Oracle 中的 TO_DATE 和 TO_CHAR 函数

Oracle 中的 TO_DATE 和 TO_CHAR 函数

30分钟:sysdate+1/48

1个小时:sysdate+1/24

一天:sysdate+1

一个星期: sysdate+7

每个星期五中午:

NEXT_DAY(TRUNC(SYSDATE),'星期五') + 12/24

一个月:add_months(sysdate,1) --可以为正负数

一年:add_months(sysdate,12)

月份加减:select to_char(add_months(sysdate-1),'yyyymm') from dual;

日期加减:select to_char(sysdate-1,'yyyymmdd') from dual;

select sysdate from dual;得到是当前时间。如果不加任何转化的话,默认的天。

select syddate+1 from dual;--后一天

select sydate-1 from dual;--前一天

select sysdate+30/60/24 from dual;--后30分钟

select sysdate-30/60/24 from dual;--前30分钟

oracle to_char 时间格式

日期格式参数 含义说明

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 年中的第几个星期

用于日期/时间 to_char() 版本的Format-pictures。

oracle数据库时间查询语句

Oracle数据库是一种强大的关系型数据库管理系统,可用于数据存储和管理。在开发和维护Oracle数据库时,时间查询是一个非常常见且必要的需求,下文将介绍关于Oracle数据库时间查询的一些常用语句。

一、获取当前日期和时间

我们可以使用系统函数SYSDATE获取当前日期和时间,例如:

SELECT SYSDATE FROM DUAL;

此语句将输出当前日期和时间的值,DUAL是Oracle数据库的一个虚拟表。

二、获取日期时间差

针对某一特定时间,获取与当前时间的差值,我们可以使用以下语句:

SELECT SYSDATE - hiredate FROM employees WHERE employee_id = 100;

此语句将输出雇员100的入职时间与当前时间的差值。

三、日期格式化输出

我们可以使用TO_CHAR函数将日期时间以特定的格式进行输出,例如:

SELECT TO_CHAR(SYSDATE, 'YY-MM-DD HH24:MI:SS') FROM DUAL;

此语句将输出当前日期和时间的值,并按照YY-MM-DD HH24:MI:SS格式进行输出。

四、时间戳查询

我们可以使用TIMESTAMP数据类型来查询包含具体时间的记录,例如:

SELECT * FROM employee_log WHERE log_time = TIMESTAMP '2022-02-22 08:30:00';

此语句将查询employee_log表中记录时间为2022-02-22 08:30:00的记录。

五、时间函数

Oracle数据库中还有许多其他有用的时间函数,如ADD_MONTHS、MONTHS_BETWEEN、LAST_DAY等,可用于获取日期的不同部分或计算两个日期之间的差值。例如:

SELECT ADD_MONTHS(SYSDATE, 3) FROM DUAL;

此语句将输出当前日期加上3个月的值。

oracleto_char函数将number转成string

oracleto_char函数将number转成string

很多数据转换处理操作时,会遇到将0.007007040000转换成0.70%的需求,我们使⽤Oracle 的SQL 函数 to_char可以实现这

种转换。

这个函数⽤来将DATE或NUMBER数据类型转换成可显⽰的字符串,格式是to_char(number_type, format_mask)。

格式'999.99',9表⽰对应的某⼀个指定位数的值,如果是值是0则忽略不显⽰,如果指定位数没有值,则以空格表⽰。

格式'0990.990',0表⽰对应的某⼀个指定位数的值,如果是值是0则显⽰为0,如果是没有值也显⽰为0。

格式'FM990.90',FM表⽰将显⽰出来的字符串定位数没有值⽽显⽰的空格清理掉,作⽤和ltrim类似。

复制代码 代码如下:

SQL> select to_char(12304.560,'999.99') from dual;

TO_CHAR(12304.560,'999.99')

---------------------------

#######

SQL> select to_char(104.560,'999.99') from dual;

TO_CHAR(104.560,'999.99')

-------------------------

104.56

SQL> select to_char(104.560,'99999.99') from dual;

TO_CHAR(104.560,'99999.99')

---------------------------

104.56

SQL> select to_char(104.560,'99999.990') from dual;

TO_CHAR(104.560,'99999.990')

----------------------------

104.560

SQL> select to_char(104.560,'0099.990') from dual;

Oracle中如何获取系统当前时间

Oracle中如何获取系统当前时间

获取系统⽇期: SYSDATE()

格式化⽇期: TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS)

或 TO_DATE(SYSDATE(),'YY/MM/DD HH24:MI:SS)

格式化数字: TO_NUMBER

注: TO_CHAR 把⽇期或数字转换为字符串

TO_CHAR(number, '格式')

TO_CHAR(salary, '$99,999.99')

TO_CHAR(date, '格式')

TO_DATE 把字符串转换为数据库中的⽇期类型

TO_DATE(char, '格式')

TO_NUMBER 将字符串转换为数字

TO_NUMBER(char, '格式')

返回系统⽇期,输出 25-12⽉-09select sysdate from dual;

mi是分钟,输出 2009-12-25 14:23:31

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

mm会显⽰⽉份,输出 2009-12-25 14:12:31

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

输出 09-12-25 14:23:31select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual

输出 2009-12-25 14:23:31

select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh24:mi:ss') from dual

⽽如果把上式写作: select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh:mi:ss') from dual

则会报错,因为⼩时hh是12进制,14为⾮法输⼊,不能匹配。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档