Oracle学习资料之强大的to_char

表 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字符) 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 小数点(使用本地化) 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 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'

合集下载

Oracle时间戳与日期的转换

Oracle时间戳与日期的转换

Oracle时间戳与⽇期的转换⼀、to_char() 与 to_date()函数1. to_char()将时间⽇期按照指定的格式输出,得到的是字符串,⽽⾮date类型。

select sysdate,to_char(sysdate, 'yyyy-mm-dd')from dual;select sysdate,to_char(sysdate, 'yyyy/mm/dd')from dual;select sysdate,to_char(sysdate, 'yyyymmdd')from dual;select sysdate,to_char(sysdate, 'yyyymmdd hh24:mi:ss')from dual;查询结果2018-12-29 13:59:50 2018-12-292018-12-29 13:59:50 2018/12/292018-12-29 13:59:50 201812292018-12-29 13:59:50 20181229 13:59:50也可以⽤to_char()得到单独的年⽉⽇时分秒的字符串select sysdate,to_char(sysdate,'yyyy')from dual;select sysdate,to_char(sysdate,'mm')from dual;select sysdate,to_char(sysdate,'hh24')from dual;select sysdate,to_char(sysdate,'mi')from dual;2018-12-29 13:59:50 20182018-12-29 13:59:50 122018-12-29 13:59:50 132018-12-29 13:04:50 04因为结果是字符串,所以0不能省略,特别在WHERE语句中,WHERE to_char(sysdate,'mi') = ‘04’0省略了就查不到数据。

to_char用法

to_char用法

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

其语法如下:TO_CHAR(value, format)其中:- value:要转换的数值、日期、时间等数据类型- format:目标字符类型格式以下是to_char的用法举例:1. 将日期类型转成字符类型```sqlSELECT TO_CHAR(sysdate, 'YYYY-MM-DD') AS current_date FROM dual;```输出结果:```CURRENT_DATE-------------------2022-12-21```2. 将数字转成字符类型```sqlSELECT TO_CHAR(1234.56, 'L99G999D99MI') ASnum_to_char FROM dual;```输出结果:```NUM_TO_CHAR-------------------$ 1,234.56-```其中L代表带有货币符号的,99和999表示数字最大位数是两位和三位,D是小数点,MI代表负数符号。

3. 将时间类型转换为字符类型```sqlSELECT TO_CHAR(sysdate, 'HH24:MI:SS') AS current_time FROM dual;```输出结果:```CURRENT_TIME-------------------10:48:22```4. 将日期和时间类型转成字符类型```sqlSELECT TO_CHAR(sysdate, 'YYYY-MM-DD HH24:MI:SS') AS current_date_time FROM dual;```输出结果:```CURRENT_DATE_TIME-------------------2022-12-21 10:48:22```。

to_char用法

to_char用法

to_char用法`to_char()` 函数用于将日期或日期时间对象转换为字符串。

它的第一个参数是日期或日期时间对象,第二个参数是用于输出的字符串格式。

下面是一些示例:```-- 将日期时间对象转换为字符串sql := "SELECT to_char(sysdate, "YYYY-MM-DD HH24:MI:SS") FROM dual";Plan: SELECT to_char(sysdate, "YYYY-MM-DD HH24:MI:SS") FROM dual;-- 将日期时间对象转换为字符串,带有时区信息sql := "SELECT to_char(sysdate, "YYYY-MM-DD HH24:MI:SS", " +"@ RegionCode) FROM dual";Plan: SELECT to_char(sysdate, "YYYY-MM-DD HH24:MI:SS", "@RegionCode") FROM dual;-- 将当前日期时间转换为字符串sql := "SELECT to_char(curdate(), "YYYY-MM-DD HH24:MI:SS") FROM dual";Plan: SELECT to_char(curdate(), "YYYY-MM-DD HH24:MI:SS") FROM dual;```在上面的示例中,`to_char()` 函数将日期时间对象转换为字符串,并使用指定的格式。

如果需要将日期时间对象转换为其他格式的字符串,请更改 `to_char()` 函数的格式字符串。

oracle语句数字转换为字符串的方法

oracle语句数字转换为字符串的方法

oracle语句数字转换为字符串的方法
在Oracle数据库中,可以使用`TO_CHAR`函数将数字转换为字符串。

以下是一个示例:
```sql
SELECT TO_CHAR FROM DUAL;
```
上述语句将数字12345转换为字符串,并返回结果`'12345'`。

您还可以使用其他格式模型来指定转换后的字符串的格式。

以下是一个示例,将数字格式化为带有千位分隔符的字符串:
```sql
SELECT TO_CHAR.89, '9,999,') FROM DUAL;
```
上述语句将数字格式化为带有千位分隔符和两位小数的字符串,并返回结果`'1,234,'`。

您可以根据需要使用不同的格式模型来自定义数字转换后的字符串格式。

有关更多详细信息,请参阅Oracle文档中的`TO_CHAR`函数部分。

to_char()、to_date()的区别

to_char()、to_date()的区别

to_char()、to_date()的区别
to_char 是把⽇期或数字转换为字符串
to_date 是把字符串转换为数据库中得⽇期类型
还记得以前初次接触oracle时对⼀些函数还不是很熟悉,⽼是弄错,⽐如在mysql中可以运⾏,但在oracle中就⼀直报错,也找不到具体的原因就会很烦恼,特别是⼩组⾥mysql和oracle混⽤的情况下,
如下sql在oracle中就会报错,⽽在mysql中就正常运⾏,后来才知道是两种库的校验⽅式不同
select t.create_time,t.* from td_f_opt_201908 t where t.create_time > '20190813';
具体原因是这样的:‘20190813’是属于字符串,在oracle中需要进⾏转换成⽇期形式,此处⽤to_date()函数,如下:
select T.CREATE_TIME,T.* from TD_F_ORDER_KFK T where T.create_time > to_date('2019-08-13','yyyy-MM-dd hh24:mi');
另⼀个⽇期函数to_char(),⼀般⽤在mybatis等持久层框架中,因为查出的数据默认是字符串,所以需要转换成我们需要的⽇期格式,不然就会在页⾯显⽰出很尴尬的情况,到时候热⼼的测试姐姐⼜要找你聊天了,具体⽤法如下:。

oracle cast_to_varchar2 原理

oracle cast_to_varchar2 原理

oracle cast_to_varchar2 原理CAST_TO_VARCHAR2不是Oracle 数据库中的一个标准函数。

但您可能是指将其他数据类型转换为VARCHAR2的操作。

在Oracle 中,可以使用CAST函数或TO_CHAR函数来将其他数据类型转换为VARCHAR2。

1.使用CAST 函数:CAST函数允许您将一种数据类型转换为另一种数据类型。

当您想将其他数据类型转换为VARCHAR2时,可以使用以下语法:sqlCAST (expression AS VARCHAR2(size))其中expression是要转换的值,size是可选的,指定了VARCHAR2的大小。

例如,将数字123转换为VARCHAR2:sqlSELECT CAST(123AS VARCHAR2(10)) FROM dual;2.使用TO_CHAR 函数:TO_CHAR函数主要用于将数字或日期转换为字符串。

当您需要更多的格式化选项时,TO_CHAR通常比CAST更受欢迎。

例如,将数字123转换为带有逗号的字符串:sqlSELECT TO_CHAR(123, '9,999') FROM dual;或者将日期SYSDATE转换为字符串:sqlSELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;原理:•当您使用CAST或TO_CHAR函数进行转换时,Oracle 会按照指定的数据类型或格式进行转换。

•对于CAST,Oracle 会根据目标数据类型(在这里是VARCHAR2)的要求,对源数据进行必要的转换。

如果转换不可能或会导致数据丢失,Oracle 可能会引发错误。

•对于TO_CHAR,Oracle 会根据提供的格式模型进行转换。

例如,在日期转换中,它会根据模型中的指示来格式化年、月、日等。

总之,无论使用哪种方法,转换的核心原理都是根据目标数据类型或格式模型,对源数据进行适当的转换和格式化。

oracle 转化月日年格式

oracle 转化月日年格式
在Oracle中,要将日期从标准格式转换为月日年格式,你可以使用TO_CHAR函数来实现。

TO_CHAR函数可以将日期转换为特定格式的字符串。

以下是一个示例:
假设你有一个名为date_column的日期字段,你可以使用以下查询来将日期转换为月日年格式:
SELECT TO_CHAR(date_column, 'MM/DD/YYYY') AS
formatted_date.
FROM your_table;
在这个查询中,TO_CHAR函数将日期转换为MM/DD/YYYY格式的字符串。

你也可以根据需要调整日期的格式,比如使用MON DD, YYYY来得到类似 "Jan 01, 2022" 的格式。

另外,如果你想在SQL中直接更新表中的日期格式,你可以使用UPDATE语句结合TO_CHAR函数来实现:
UPDATE your_table.
SET date_column = TO_CHAR(date_column, 'MM/DD/YYYY');
这将把日期字段date_column的格式更新为月日年格式。

总之,在Oracle中,你可以使用TO_CHAR函数来将日期转换为月日年格式,无论是在查询中显示还是在更新表中的数据。

希望这些信息能够帮助到你。

极好的 sql oracle 培训资料03


下转换:
从 VARCHAR2 or CHAR 到 NUMBER
VARCHAR2 or CHAR
DATE
显式转换
TO_NUMBER TO_DATE
NUMBER
CHARACTER
DATE
TO_CHAR
TO_CHAR
TO_CHAR 用于日期型
TO_CHAR(date, 'fmt')
日期格式模型: − 必须用单引号引起来并且是大小写敏感的 − 可以包含任何有效的日期元素 − 可以用fm来消除前导空格或零 − 使用逗号与日期型数据分隔开
RR 日期格式
当前年份 1995 1995 2001 2001 指定的日期 27-OCT-95 27-OCT-17 27-OCT-17 27-OCT-95 RR 格式 1995 2017 2017 1995 YY 格式 1995 1917 2017 2095
如果指定两位数年份是: 0–49 如果当前年 份的两位数 是: 0–49 返回的日期是当前世 纪的日期 返回的日期是下一个 世纪的日期 50–99 返回的日期是上一个 世纪的日期 返回的日期是当前世 纪的日期
EMPNO ENAME DEPTNO --------- ---------- --------7698 BLAKE 30
字符处理函数
字符处理函数
函数 CONCAT('Good', 'String') SUBSTR('String',1,3) LENGTH('String') INSTR('String', 'r') 结果 GoodString Str 6 3
Single-Row Functions 单行函数

sql中to_char用法

sql中to_char用法标题:深入理解SQL中的TO_CHAR函数用法在SQL中,TO_CHAR函数是一个非常实用的工具,主要用于将数值类型或日期时间类型的数据转换为字符类型。

这个函数的强大之处在于它可以灵活地控制转换后的格式,使得数据更加易于阅读和理解。

以下是一步步详细解析TO_CHAR函数的用法。

一、基本语法TO_CHAR函数的基本语法如下:TO_CHAR(numeric_value date_time_value, format_model)其中,numeric_value是你要转换的数值,date_time_value是你要转换的日期时间值,format_model是你希望转换后的格式。

二、数值类型的转换1. 简单转换对于数值类型的转换,TO_CHAR函数可以将数字转换为指定格式的字符串。

例如,以下语句将数字12345转换为带有逗号分隔的字符串:SELECT TO_CHAR(12345, '999G999G999D99') FROM DUAL;结果为:"12,345"在这里,'999G999G999D99'是格式模型,其中'9'代表一个数字位,'G'表示分组分隔符(默认为逗号),'D'表示小数点。

2. 格式化货币值TO_CHAR函数还可以用于格式化货币值。

例如,以下语句将数字1234.56转换为货币格式的字符串:SELECT TO_CHAR(1234.56, 'L999G999G990D00','NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;结果为:"¥1,234.56"在这里,'L'表示货币符号,'NLS_NUMERIC_CHARACTERS = '',.{}''定义了小数点和千位分隔符。

oracle的to_date、to_char对应mysql的什么语法

oracle的to_date、to_char对应mysql的什么语法1.oracle的date转string⽤to_char,string转date⽤to_date例如:select to_char(sysdate,'yyyymmdd') from dualselect to_date('20210301','yyyymmdd') from dual2.mysql的string转date⽤(1)DATE() 函数:返回⽇期或⽇期时间表达式的⽇期部分;例如:select date('20210506') from biz_holidays_info(2)str_to_dateselect str_to_date(dat,'%Y-%m-%d') from biz_holidays_info3.mysql的date转string⽤date_formatSELECT DATE_FORMAT( NOW(), '%Y-%m-%d %h:%i %p' ) FROM DUAL;可使⽤的格式格式描述%a 缩写星期名%b 缩写⽉名%c ⽉,数值%D 带有英⽂前缀的⽉中的天%d ⽉的天,数值(00-31)%e ⽉的天,数值(0-31)%f 微秒%H ⼩时 (00-23)%h ⼩时 (01-12)%I ⼩时 (01-12)%i 分钟,数值(00-59)%j 年的天 (001-366)%k ⼩时 (0-23)%l ⼩时 (1-12)%M ⽉名%m ⽉,数值(00-12)%p AM 或 PM%r 时间,12-⼩时(hh:mm:ss AM 或 PM)%S 秒(00-59)%s 秒(00-59)%T 时间, 24-⼩时 (hh:mm:ss)%U 周 (00-53) 星期⽇是⼀周的第⼀天%u 周 (00-53) 星期⼀是⼀周的第⼀天%V 周 (01-53) 星期⽇是⼀周的第⼀天,与 %X 使⽤%v 周 (01-53) 星期⼀是⼀周的第⼀天,与 %x 使⽤%W 星期名%w 周的天(0=星期⽇, 6=星期六)%X 年,其中的星期⽇是周的第⼀天,4 位,与 %V 使⽤%x 年,其中的星期⼀是周的第⼀天,4 位,与 %v 使⽤%Y 年,4 位%y 年,2 位。

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