Oracle to_char 日期转换字符串

合集下载

Oracle to

Oracle to

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

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

比如最简单的应用:Select TO_CHAR(1.0123) FROM DUALSelect TO_CHAR(123) FROM DUAL接下来再看看下面:SELEC TO_CHAR(0.123) FROM DUAL上面的结果'.123' 在大多数情况下都不是我们想要的结果,我们想要的应该是'0.123'。

我们来看一下to_char函数的具体用法:TO_CHAR ( n [, fmt [, 'nlsparam']] )该函数将NUMBER类型的n按数值格式fmt转换成V ARCHAR2类型的值。

'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'的值:Select TO_CHAR(0.123,'0.999') FROM DUALSelect TO_CHAR(100.12,'0.999') FROM DUALSelect TO_CHAR(1.12,'0.999') FROM DUAL' 0.123'是出来了,可是前面又多了一个空格。

Oracle中TO_DATE、TO_CHAR详解

Oracle中TO_DATE、TO_CHAR详解

TO_CHAR 是把日期或数字转换为字符串TO_DATE 是把字符串转换为数据库中得日期类型转换函数TO_NUMBER 将字符转化为数字? TO_CHAR使用TO_CHAR函数处理数字TO_CHAR(number, '格式')TO_CHAR(salary,’$99,999.99’);使用TO_CHAR函数处理日期TO_CHAR(date,’格式’);? TO_NUMBER使用TO_NUMBER函数将字符转换为数字TO_NUMBER(char[, '格式'])? TO_DATE使用TO_DATE函数将字符转换为日期TO_DATE(char[, '格式'])? 数字格式格式9 代表一个数字0 强制显示0$ 放置一个$符L 放置一个浮动本地货币符. 显示小数点, 显示千位指示符? 日期格式格式控制描述YYYY、YYY、YY 分别代表4位、3位、2位的数字年YEAR 年的拼写MM 数字月MONTH 月的全拼MON 月的缩写DD 数字日DAY 星期的全拼DY 星期的缩写AM 表示上午或者下午HH24、HH12 12小时制或24小时制MI 分钟SS 秒钟SP 数字的拼写TH 数字的序数词“特殊字符” 假如特殊字符HH24:MI:SS AM 15:43:20 PM日期例子:SELECT TO_DATE('2006-05-01 19:25:34', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL SELECT TO_DATE('2006-05-01 19:25', 'YYYY-MM-DD HH24:MI') FROM DUAL SELECT TO_DATE('2006-05-01 19', 'YYYY-MM-DD HH24') FROM DUALSELECT TO_DATE('2006-05-01', 'YYYY-MM-DD') FROM DUALSELECT TO_DATE('2006-05', 'YYYY-MM') FROM DUALSELECT TO_DATE('2006', 'YYYY') FROM DUAL日期说明:当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。

Oracleto_char函数的使用方法

Oracleto_char函数的使用方法

Oracleto_char函数的使⽤⽅法Oracle to_char函数的功能是将数值型或者⽇期型转化为字符型,下⾯就为您详细介绍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字符)DY缩写⼤写⽇期名(3字符)Dy缩写混合⼤⼩写⽇期名(3字符)dy缩写⼩写⽇期名(3字符)DDD⼀年⾥的⽇⼦(001-366)⼀年⾥的⽇⼦(001-366)⼀个⽉⾥的⽇⼦(01-31)⼀周⾥的⽇⼦(1-7;SUN=1)⼀个⽉⾥的周数⼀年⾥的周数世纪(2 位)Julian ⽇期(⾃公元前4712年1⽉1⽇来的⽇期)季度罗马数字的⽉份(I-XII;I=JAN)-⼤写罗马数字的⽉份(I-XII;I=JAN)-⼩写所有模板都都允许使⽤前缀和后缀修改器。

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```。

mysql与oracle字符转换_sql日期和字符相互转换方法(MySQL和Oracle中)

mysql与oracle字符转换_sql日期和字符相互转换方法(MySQL和Oracle中)

mysql与oracle字符转换_sql日期和字符相互转换方法(MySQL和Oracle中)在MySQL和Oracle中,可以使用以下方法来进行SQL日期和字符之间的转换:1.在MySQL中,可以使用DATE_FORMAT(函数将日期格式化为指定的字符串格式。

例如,将日期转换为YYYY-MM-DD的字符串格式:```SELECT DATE_FORMAT(date_column, '%Y-%m-%d') ASformatted_dateFROM table_name;```可以使用STR_TO_DATE(函数将字符串解析为日期。

例如,将字符串格式的日期解析为日期类型:```SELECT STR_TO_DATE('2024-01-01', '%Y-%m-%d') AS date_value FROM dual;```2. 在Oracle中,可以使用TO_CHAR(函数将日期格式化为指定的字符串格式。

例如,将日期转换为YYYY-MM-DD的字符串格式:```SELECT TO_CHAR(date_column, 'YYYY-MM-DD') AS formatted_dateFROM table_name;```可以使用TO_DATE(函数将字符串解析为日期。

例如,将字符串格式的日期解析为日期类型:```SELECT TO_DATE('2024-01-01', 'YYYY-MM-DD') AS date_valueFROM dual;```请注意,日期格式化和日期解析的格式字符串可能在MySQL和Oracle之间略有不同。

因此,您可能需要根据具体的日期格式进行调整。

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等持久层框架中,因为查出的数据默认是字符串,所以需要转换成我们需要的⽇期格式,不然就会在页⾯显⽰出很尴尬的情况,到时候热⼼的测试姐姐⼜要找你聊天了,具体⽤法如下:。

Oracleto_char格式化函数

Oracleto_char格式化函数

表5-8. 用于date/time 转换的模板所有模板都都允许使用前缀和后缀修改器。

模板里总是允许使用修改器。

前缀'FX' 只是一个全局修改器。

表5-9. 用于日期/时间模板to_char() 的后缀用法须知:•如果没有使用FX选项,to_timestamp和to_date忽略空白。

FX必须做为模板里的第一个条目声明。

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

•双引号('"')之间的字串被忽略并且不被分析。

如果你想向输出写双引号,你必须在双引号前面放置一个双反斜杠('\\'),例如 '\\"YYYY Month\\"'。

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

表5-10. 用于to_char(numeric) 的模板用法须知:•使用'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后面的数字。

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

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 位。

oracle的显式和隐式的转换函数

oracle的显式和隐式的转换函数

Oracle的转换函数类型分为①隐形②显性隐式转换(有缺陷如下例子)例子'22.2'+10------------------------------------------这里的字符是有限定的必须是连续的数字((可以是小数)。

(注意:不能出现¥$ 与千分符,)----------32.2显示转化(重点)Tochar()将时间或日期转化成为字符to_char函数对日期转化格式:TO_CHAR(sysdate,‘yyyy-mm-dd hh:mi:ss’)要求:①必须包含在单引号中而且大小写敏感。

②可以包含任意的有效的日期格式。

③参数之间用逗号隔开。

详细见日期与字符串重要的例子:select to_char(sysdate,'yyyy"年"mm"月"dd')--------------------------如果想在年月日中使用(非:空格- /)字符串做为分割要使用“间隔内容”双引号from dualto_char对数字的转化9 数0 零$ 美元符L 本地货币符.-----点小数点,---逗号千位符格式示例:TO_CHAR(salary, '$99,999.00')例子:①select employee_id,to_char(salary,'99,999.00$')from employees结果等同于select employee_id,to_char(salary,'$99,999.00')from employees②select employee_id,to_char(salary,'$ 99,999.00')------------美元符号后面加了空格错误了(因为数字模型没有空格)from employeesto_number()将字符转化成为numberselect to_number('$99.123','$999.000')----------------------------(注意前面是3为小数。

ORACLE函数之日期时间转换函数

ORACLE函数之日期时间转换函数

ORACLE函数之⽇期时间转换函数1、TO_CHAR语法:TO_CHAR(X [,format])说明:将X按format格式转换成字符串。

X是⼀个⽇期或者数字。

format是⼀个规定了X採⽤何种格式转换的格式字符串举例:SQL>SELECT TO_CHAR(sysdate,'YYYY-MM-DD hh24:mi:ss') A FROM DUAL;A-------------------2014-06-1815:58:432、TO_DATE语法:TO_DATE(C [,format])说明:将符合format指定的特定⽇期格式的字符串C转换成DATE类型的数据举例:SQL>SELECT TO_DATE('2014-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') A FROM DUAL;A------------------------------2014/5/713:23:443、TO_DSINTERVAL语法:TO_DSINTERVAL (C)说明:将符合特定格式的字符串C转换成INTERVAL DAY TO SECOND类型的数据。

TO_DSINTERVAL(fmt) 转换⼀个格式字符串为⼀个内部的 DAY—>SECOND举例:1)加上当前时间的天时分秒SQL>select sysdate+TO_DSINTERVAL(to_char(sysdate,'DD hh24:mi:ss')) A from dual;A------------------------------2014/7/93:12:322)加上10天SQL>select sysdate+TO_DSINTERVAL('1000:00:00') A from dual;A------------------------------2014/6/2913:36:254、NUMTODSINTERVAL语法:NUMTODSINTERVAL(N,C)说明:把数字N转换成C指定的INTERVAI DAY TO SECOND类型的数据。

oracle时间格式转化以及计算

oracle时间格式转化以及计算
--当前时间加一个月 select to_char(add_months(sysdate,1),'yyyy-MM-dd HH24:mi:ss') from dual;
--将字符串转化为时间格式 select to_date('2017-02-05 13:12:56','yyyy-MM-DD HH24:MI:SS') from dual;
登录后才能查看或发表评论立即登录或者逛逛博客园首页
oracle时 间 格 式 转 化 以 及 计 算
--A表中的日期字段 create_date 例如:2017-08-05 转化为2017年8月5日 oto_char(to_date(tt.create_date,'yyyy-MM-dd'),'yyyy"年"MM"月"dd"日"') from A tt;
--将系统时间转化为字符串 select to_CHAR(sysdate,'yyyy-MM-DD HH24:MI:SS') from dual;
--当前时间加一天 select to_char((sysdate+1),'yyyy-MM-dd HH24:mi:ss') from dual;
--当前时间加30分钟,+1 默认是一天 select to_char((sysdate+30/24/60),'yyyy-MM-dd HH24:mi:ss') from dual;
--获取两个时间相差的月份 select months_between(sysdate,sysdate+1) from dual;

oracle中时间格式的转换

oracle中时间格式的转换

oracle中时间格式的转换1:取得当前⽇期是本⽉的第⼏周select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual;TO_CHAR(SYSDATE,'YY')select to_char(sysdate,'W') from dual;2:取得当前⽇期是⼀个星期中的第⼏天,注意星期⽇是第⼀天select sysdate,to_char(sysdate,'D') from dual; 类似:select to_char(sysdate,'yyyy') from dual; --年select to_char(sysdate,'Q' from dual; --季select to_char(sysdate,'mm') from dual; --⽉select to_char(sysdate,'dd') from dual; --⽇ddd 年中的第⼏天WW 年中的第⼏个星期W 该⽉中第⼏个星期D 周中的星期⼏hh ⼩时(12)hh24 ⼩时(24)Mi 分ss 秒3:取当前⽇期是星期⼏中⽂显⽰:select to_char(sysdate,'day') from dual;TO_CHAR(SYSDATE,'DAY')星期四4:如果⼀个表在⼀个date类型的字段上⾯建⽴了索引,如何使⽤alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'5: 得到当前的⽇期select sysdate from dual;6: 得到当天凌晨0点0分0秒的⽇期select trunc(sysdate) from dual;-- 得到这天的最后⼀秒select trunc(sysdate) + 0.99999 from dual;-- 得到⼩时的具体数值select trunc(sysdate) + 1/24 from dual;select trunc(sysdate) + 7/24 from dual;7.得到明天凌晨0点0分0秒的⽇期select trunc(sysdate+1) from dual;select trunc(sysdate)+1 from dual;8: 本⽉⼀⽇的⽇期select trunc(sysdate,'mm') from dual;9:得到下⽉⼀⽇的⽇期select trunc(add_months(sysdate,1),'mm') from dual;10:返回当前⽉的最后⼀天?select last_day(sysdate) from dual;select last_day(trunc(sysdate)) from dual;select trunc(last_day(sysdate)) from dual;select trunc(add_months(sysdate,1),'mm') - 1 from dual;11: 得到⼀年的每⼀天select trunc(sysdate,'yyyy')+ rn -1 date0from(select rownum rn from all_objectswhere rownum<366);12:今天是今年的第N天SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;13:如何在给现有的⽇期加上2年select add_months(sysdate,24) from dual;14:判断某⼀⽇⼦所在年分是否为润年select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','闰年','平年') from dual;15:判断两年后是否为润年select decode(to_char(last_day(trunc(add_months(sysdate,24),'y')+31),'dd'),'29','闰年','平年') from dual;16:得到⽇期的季度select ceil(to_number(to_char(sysdate,'mm'))/3) from dual;select to_char(sysdate, 'Q') from dual;TO_DATE格式(以时间:2007-11-02 13:45:25为例)Year:yy two digits 两位年显⽰值:07yyy three digits 三位年显⽰值:007yyyy four digits 四位年显⽰值:2007Month:mm number 两位⽉显⽰值:11mon abbreviated 字符集表⽰显⽰值:11⽉,若是英⽂版,显⽰novmonth spelled out 字符集表⽰显⽰值:11⽉,若是英⽂版,显⽰novemberDay:dd number 当⽉第⼏天显⽰值:02ddd number 当年第⼏天显⽰值:02dy abbreviated 当周第⼏天简写显⽰值:星期五,若是英⽂版,显⽰friday spelled out 当周第⼏天全写显⽰值:星期五,若是英⽂版,显⽰fridayddspth spelled out, ordinal twelfthHour:hh two digits 12⼩时进制显⽰值:01hh24 two digits 24⼩时进制显⽰值:13Minute:mi two digits 60进制显⽰值:45Second:ss two digits 60进制显⽰值:25其它Q digit 季度显⽰值:4WW digit 当年第⼏周显⽰值:44W digit 当⽉第⼏周显⽰值:124⼩时格式下时间范围为: 0:00:00 - 23:59:59....12⼩时格式下时间范围为: 1:00:00 - 12:59:59 ....1. ⽇期和字符转换函数⽤法(to_date,to_char)select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //⽇期转化为字符串select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年select to_char(sysdate,'mm') as nowMonth from dual; //获取时间的⽉select to_char(sysdate,'dd') as nowDay from dual; //获取时间的⽇select to_char(sysdate,'hh24') as nowHour from dual; //获取时间的时select to_char(sysdate,'mi') as nowMinute from dual; //获取时间的分select to_char(sysdate,'ss') as nowSecond from dual; //获取时间的秒select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual//2.select to_char( to_date(222,'J'),'Jsp') from dual显⽰Two Hundred Twenty-Two3.求某天是星期⼏select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;星期⼀select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;monday设置⽇期语⾔ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';也可以这样TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')4. 两个⽇期间的天数select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;5. 时间为null的⽤法select id, active_date from table1UNIONselect 1, TO_DATE(null) from dual;注意要⽤TO_DATE(null)6.⽉份差a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')那么12⽉31号中午12点之后和12⽉1号的12点之前是不包含在这个范围之内的。

oracle时间年月日季各种转换

oracle时间年月日季各种转换

--ORACLE时间字段取年、月、日、季度附加运行例子--得到年月,日,季度--时间格式转字符串各种格式并输出select to_char(日期, 'yyyymmdd') DATE_ID,to_char(日期, 'yyyy') || '年' || to_char(日期, 'mm') || '月' ||to_char(日期, 'dd') || '日' DATE_NAME,to_char(日期, 'yyyymm') MONTH_ID,to_char(日期, 'yyyy') || '年' || to_char(日期, 'mm') || '月' MONTH_NAME,'Q' || to_char(日期, 'q.yyyy') QUARTERID,to_char(日期, 'yyyy') || '年第' || to_char(日期, 'q') || '季度' QUARTERID_NAME,to_char(日期, 'yyyy') YEAR_ID,to_char(日期, 'yyyy') || '年' YEAR_NAMEfrom (select to_date('2000-01-01', 'yyyy-mm-dd') + (rownum - 1) 日期from user_objectswhere rownum < 367and to_date('2000-01-01', 'yyyy-mm-dd') + (rownum - 1) <to_date('2001-01-01', 'yyyy-mm-dd'));--得到季度和月份对应关系select distinct to_char(日期, 'q') 季度,to_char(to_date('2001-01-01', 'yyyy-mm-dd') + (rownum - 1),'yyyymm') 日期from (select to_date('2001-01', 'yyyy-mm') + (rownum - 1) 日期from user_objectswhere rownum < 367and to_date('2001-01-01', 'yyyy-mm-dd') + (rownum - 1) <to_date('2002-01-01', 'yyyy-mm-dd'));--得到一年中的天数select to_char(to_date('2000-01-01', 'yyyy-mm-dd') + (rownum - 1),'yyyy-mm-dd') 日期from user_objectswhere rownum < 367and to_date('2000-01-01', 'yyyy-mm-dd') + (rownum - 1) <to_date('2001-01-01', 'yyyy-mm-dd');--总结:--to_char 时间转字符串 --to_date 字符串转时间--to_char(sysdate, 'q') 季--to_char(sysdate, 'yyyy') 年--to_char(sysdate, 'mm') 月-- to_char(sysdate, 'dd') 日--to_char(sysdate, 'd') 星期中的第几天--to_char(sysdate, 'DAY') 星期几--to_char(sysdate, 'ddd') 一年中的第几天。

oracle format 用法

oracle format 用法

oracle format 用法Oracle Format 是 Oracle 数据库中用于格式化日期、时间和数字的函数。

它允许用户根据自己的需求对日期、时间和数字进行格式化,并返回一个格式化后的字符串作为结果。

下面将对 Oracle Format 的用法进行详细介绍。

1. 格式化日期:- TO_CHAR函数:TO_CHAR(date, format) 函数用于将日期格式化为字符串。

其中,date 表示要格式化的日期,format 是指定日期格式的参数。

例如,TO_CHAR(SYSDATE, 'YYYY-MM-DD') 可以将当前日期格式化为'YYYY-MM-DD' 格式的字符串。

- 示例:SELECT TO_CHAR(hire_date, 'YYYY-MM-DD') FROM employees;2. 格式化时间:- TO_CHAR函数:TO_CHAR(date, format) 函数同样可以用于将时间格式化为字符串。

只需将时间部分放入到 date 参数中。

例如,TO_CHAR(SYSDATE, 'HH24:MI:SS') 可以将当前时间格式化为 'HH24:MI:SS' 格式的字符串。

- 示例:SELECT TO_CHAR(hire_date, 'HH24:MI:SS') FROM employees;3. 格式化数字:- TO_CHAR函数:TO_CHAR(number, format) 函数还可以将数字格式化为字符串。

其中,number 表示要格式化的数字,format 是指定数字格式的参数。

例如,TO_CHAR(salary, '$99,999.99') 可以将工资格式化为带有美元符号和千位分隔符的字符串。

- 示例:SELECT TO_CHAR(salary, '$99,999.99') FROM employees;需要注意的是,日期、时间和数字格式化字符串中的格式符号是有特定含义的,比如 'YYYY' 表示四位年份,'MM' 表示两位月份。

oracle to_char 用法 (转)_。。

oracle to_char 用法 (转)_。。
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 the to_char function is
used to convert a date to a string. These parameters can be used in many
---------------JoeCom 2006-08-08
posted on 2007-01-04 18:12 Sammy 阅读(11850) 评论(8) 编辑 收藏 网摘
评论
RMRoman numeral month (I-XII; JAN = I).
WWWeek of year (1-53of the
year and continues to the seventh day of the year.
DDay of week (1-7).
DAYName of day.
DDDay of month (1-31).
DDDDay of year (1-366).
DYAbbreviated name of day.
我们重新确定一个新的需求:
1、去空格
2、小数点最多4位,最少保留2位。
1--->'1.00';1.1--->'1.00';1.12-->'1.12';1.1234--->'1.1234';

TO_CHAR 和 TO_DATE的一些用法总结

TO_CHAR 和 TO_DATE的一些用法总结

TO_CHAR 和TO_DATE的一些用法总结对于初学者来说,日期处理那快一向是问题的集中地.今天刚刚看了个案例,将的就是ORACLE日期处理中的错误,其关键原因,就是TO_CHAR 和TO_DATE的用法不清晰,,事实上,这两个东西也特别容易混淆,为此,把他们的区别再介绍下.to char 是把日期或数字转换为字符串to date 是把字符串转换为数据库中得日期类型⌝转换函数" TO_CHAR使用TO_CHAR函数处理数字TO_CHAR(number, '格式')TO_CHAR(salary,’$99,999.99’);使用TO_CHAR函数处理日期TO_CHAR(date,’格式’);" TO_NUMBER使用TO_NUMBER函数将字符转换为数字TO_NUMBER(char[, '格式'])" TO_DATE使用TO_DATE函数将字符转换为日期TO_DATE(char[, '格式'])TO_DATE:spl> select * from empwhere datesbetweento_date('2007-06-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss')andto_date('2007-06-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss')当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。

如果输入的日期数据忽略时间部分,Oracle会将时、分、秒部分都置为0,也就是说会取整到日。

同样,忽略了DD参数,Oracle会采用1作为日的默认值,也就是说会取整到月。

但是,不要被这种“惯性”所迷惑,如果忽略MM参数,Oracle并不会取整到年,取整到当前月。

注意:1.在使用Oracle的to_date函数来做日期转换时,可能会直觉地采用“yyyy-MM-ddHH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。

Oracle 中to_char和to_number和to_date教程

Oracle 中to_char和to_number和to_date教程

TO_CHAR 是把日期或数字转换为字符串TO_DATE 是把字符串转换为数据库中得日期类型转换函数TO_NUMBER 将字符转化为数字" TO_CHAR使用TO_CHAR函数处理数字TO_CHAR(number, '格式')TO_CHAR(salary,’$99,999.99’);使用TO_CHAR函数处理日期TO_CHAR(date,’格式’);" TO_NUMBER使用TO_NUMBER函数将字符转换为数字TO_NUMBER(char[, '格式'])" TO_DATE使用TO_DATE函数将字符转换为日期TO_DATE(char[, '格式'])"数字格式格式9 代表一个数字0 强制显示0$ 放置一个$符L 放置一个浮动本地货币符. 显示小数点, 显示千位指示符"日期格式格式控制描述YYYY、YYY、YY 分别代表4位、3位、2位的数字年YEAR 年的拼写MM 数字月MONTH 月的全拼MON 月的缩写DD 数字日DAY 星期的全拼DY 星期的缩写AM 表示上午或者下午HH24、HH12 12小时制或24小时制MI 分钟SS 秒钟SP 数字的拼写TH 数字的序数词“特殊字符” 假如特殊字符HH24:MI:SS AM 15:43:20 PM日期例子:SELECT TO_DATE('2006-05-01 19:25:34', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL SELECT TO_DATE('2006-05-01 19:25', 'YYYY-MM-DD HH24:MI') FROM DUALSELECT TO_DATE('2006-05-01 19', 'YYYY-MM-DD HH24') FROM DUALSELECT TO_DATE('2006-05-01', 'YYYY-MM-DD') FROM DUALSELECT TO_DATE('2006-05', 'YYYY-MM') FROM DUALSELECT TO_DATE('2006', 'YYYY') FROM DUAL日期说明:当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。

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

3》得到当前时间的前一分钟
select to_char(Sysdate-1/21/60,'HH24:MI:SS')from dual;
TO_CHAR(SYSDATE-1/21/60,'HH24:
------------------------------
15:00:54
)
) days
from ( select
monday
设置日期语言
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
也可以这样
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')
4.
所以,当时间需要精确的时候,觉得to_char还是必要的
7. 日期格式冲突问题
输入的格式要看你安装的ORACLE字符集的类型, 比如: US7ASCII, date格式的类型就是: '01-Jan-01'
alter system set NLS_DATE_LANGUAGE = American
1》以12小时制显示
SQL>select to_char(sysdate,'YYYY-MM-DD HH12:MI:SS AM')from dual;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH1
------------------------------
2007-06-29 02:50:06 下午
TO_CHAR(SYSDATE+1,'YYYY-MM-DD'
------------------------------
查询当前时间的前六个月
select add_months(sysdate,-6) from dual
1、转换函数
与date操作关系最大的就是两个转换函数:to_date(),to_char()
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') time from dual;
TIME
-------------------
2004-10-08 15:22:58
即把当前时间按yyyy-mm-dd hh24:mi:ss格式转换成字符类型
alter session set NLS_DATE_LANGUAGE = American
或者在to_date中写
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
两个日期间的天数
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
5. 时间为null的用法
select id, active_date from table1
UNION
select 1, TO_DATE(null) from dual;
[ZT]日期和時間函數匯總
1.
日期和字符转换函数用法(to_date,to_char)
2.
select to_char( to_date(222,'J'),'Jsp') from dual
显示Two Hundred Twenty-Two
3.
求某天是星期几
from all_objects
where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-
02-01','yyyy-mm-dd')+1
)
where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )
注意要用TO_DATE(null)
6.
a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')
那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。
SQL> select sysdate ,to_char(sysdate,'hh') from dual;
SYSDATE TO_CHAR(SYSDATE,'HH')
-------------------- ---------------------
2003-10-13 19:35:21 07
DDD:年所中的第几天
DAY:九个字符表示的天的全称,右边用空格补齐
HH,HH12:一天中的第几个小时,12进制表示法
HH24:一天中的第几个小时,取值为00~23
MI:一小时中的分钟
SS:一分钟中的秒
SSSS:从午夜开始过去的秒数
to_char():将日期转按一定格式换成字符类型
to_date() 作用将字符类型按一定格式转化为日期类型:
具体用法:to_date('2004-11-27','yyyy-mm-dd'),前者为字符串,后者为转换日期格式,注意,前后两者要以一对应。
如;to_date('2004-11-27 13:34:43', 'yyyy-mm-dd hh24:mi:ss') 将得到具体的时间
在oracle中处理日期大全
TO_DATE格式
Day:
dd number 12
dy abbreviated fri
day spelled out friday
ddspth spelled out, ordinal twelfth
Month:
mm number 03
4》得到当前时间的后一分钟
select to_char(Sysdate+1/21/60,'HH24:MI:SS')from dual;
TO_CHAR(SYSDATE+1/21/60,'HH24:
------------------------------
15:03:53
not
in ( '1', '7' )
查找2002-02-28至2002-02-01间除星期一和七的天数
在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100秒, 而不是毫秒).
9.
select months_between(to_date('01-31-1999','MM-DD-YYYY'),
5》得到当前时间的前一小时
select to_char(Sysdate-1/24,'HH24:MI:SS')from dual;
TO_CHAR(SYSDATE-1/24,'HH24:MI:
------------------------------
14:03:13
6》得到当前时间的后一小时
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;
星期一
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
begin
return sysdate;
end;
select to_char(sys_date,'hh:mi:ss') from all_objects;
12.
获得小时数
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer
to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
1
select months_between(to_date('02-01-1999','MM-DD-YYYY'),
to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
11
select to_char(sysdate,'hh:mi:ss') TIME from all_objects
注意:第一条记录的TIME 与最后一行是一样的
可以建立一个函数来处理这个问题
create or replace function sys_date return date is
相关文档
最新文档