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 emp
where dates
between
to_date('2007-06-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss')
and
to_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-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;
原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
2.另要以24小时的形式显示出来要用HH24
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分钟
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm会显示月份
TO_CHAR:
1、
TO_CHAR ( nchar | clob | nclob )
以接受NCHAR, NVARCHAR2, CLOB, NCLOB类型的字符串作为自己的参数,把它们转换成数据库的字符集的字符串。请看下面这个例子:
这个是national 字符集的情况:
这个是clob的情况:
09:59:03 SQL> create table t(a clob) ; Table created. 09:59:15 SQL> insert into t values ('aaaaaaaaaaaaaaaaaaaaaaaaaa') ; 1 row created. 09:59:31 SQL> select * from t; A -------------------------------------------------------------------------------- aaaaaaaaaaaaaaaaaaaaaaaaaaa 10:00:03 SQL> select to_char(a) from t TO_CHAR(A) ---------------------------------------------------------------------------------------------------------------------- aaaaaaaaaaaaaaaaaaaaaaaaaaa |
2、
TO_CHAR ( date [, fmt [, 'nlsparam'] ])
它的作用是将一个日期date转换成一个指定格式fmt的字符串。有关nlsparam基本可以不管,它是用来确定返回的日期的名字以及缩写词等的形式,如你的数据库语言如果是英语,那么返回的月份表示可能是类似这样的“MAY”;而如果你的数据库语言是汉语,那么返回的月份表示可能是类似这样的“五月”。nlsparam就是用来改变这些显示,如假设你的数据库语言是汉语,而你像把它变成英语的表示,则可以这样设置:nls_date_language=’english’。99%可以不用管这个参数。如下面这个例子:
10:13:29 SQL> select to_char(sysdate,'yyyy-mm-dd') today from dual; TODAY ---------- 2007-09-24 |
可能大家问题最多的就是fmt这个格式设置有哪些了,下面我列出一个列表来说明这些:
元素 |
表示含义 |
- / , . ; : “test” |
这些标点符号和具体的字符串,最终会显示出来,其实他们启到的作用就是分隔,如下面这个日期: 2007-9-16 这里符合“-”就启到了分隔年月日的作用。 |
AD A.D. |
公元后 |
BC B.C. |
公元前 |
AM A.M. |
早上,上午 |
PM P.M. |
下午 |
D |
一周的第几天,星期天是1 |
DAY |
星期几,,一共用9个字符大小来显示,如果没有这么长,名称的右边用空格来填充 |
DD |
一个月的第几天,【1~31】 |
DDD |
一年的第几天,【1~366】 |
DY |
星期几,但是是简称,如周一可能就是MON |
FF[0..9] |
这个是用于timestamp类型的,用于表示将秒分成多少位数来表示,在FF后面跟上一个0到9的数字。 |
HH |
小时,【1~12】 |
HH12 |
小时,【1~12】 |
HH24 |
小时,【0~23】 |
MI |
分钟,【0~59】 |
MM |
月份,【01~12】 |
MON |
月份,但是是月份的简称,如1月可能是JAN来表示 |
MONTH |
月份,月份的名称,如9月可能是september来表示,一共用9个字符大小来显示,如果没有这么长,名称的右边用空格来填充 |
Q |
季节,【1,2,3,4】分别代表春夏秋冬 |
SS |
秒,【0~59】 |
SSSS |
从午夜0秒开始计算到现在的秒数 |
WW |
一年的第几个周,【1~53】 |
W |
一个月的第几个周,【1~5】 |
Y,YYY |
年份,中间有个逗号 |
YEAR SYEAR |
年份,用字符串显示,S表示指示公元前(BC)使用“-”表示 |
YYYY SYYY |
4个数字的年份,S表示指示公元前(BC)使用“-”表示 |
YYY YY Y |
分别表示年份的后面三个、两个、一个数字 |
[@more@]
TO_CHAR 和 TO_DATE的一些用法总结的更多相关文章
- Oracle to_char()和to_date()函数的用法
to_char()函数是我们经常使用的函数,下面就为您详细介绍Oracle to_date()函数的用法 1.to_char()函数分析 1)SQL中不区分大小写,MM和mm被认为是相同的格式代码 先 ...
- Oracle to_date()函数的用法
Oracle to_date()函数的用法 to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,供您参考学习. 在Orac ...
- oracle中TO_CHAR与TO_DATE
TO_CHAR 是把日期或数字转换为字符串TO_DATE 是把字符串转换为数据库中得日期类型转换函数 TO_DATE格式(以时间:2016-07-25 11:45:25为例) Year: yy t ...
- Oracle to_date()函数的用法介绍
to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,需要的朋友可以参考下 在Oracle数据库中,Oracle t ...
- Oracle to_date()函数的用法《转载》
to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明, 原文地址:http://database.51cto.com/art ...
- 关于oracle中to_char和to_date的用法
一.24小时的形式显示出来要用HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('200 ...
- oracle的to_number、to_char、to_date用法
TO_DATE 是把字符串转换为数据库中得日期类型转换函数TO_CHAR 是把日期或数字转换为字符串TO_NUMBER 将字符转化为数字 TO_DATE使用TO_DATE函数将字符转换为日期TO_DA ...
- to_char()、to_date()的区别
to_char 是把日期或数字转换为字符串 to_date 是把字符串转换为数据库中得日期类型 还记得以前初次接触oracle时对一些函数还不是很熟悉,老是弄错,比如在mysql中可以运行,但在ora ...
- oracle to_char()及to_date()函数使用
to_char(x[,format]) :将x转换成字符串,可以使用format参数来格式化字符串输出. to_date(x[,format]) :将字符串x转换成日期,可以使用format匹配要转换 ...
随机推荐
- springboot实现邮件发送
1.创建springboot项目. 2.创建好的项目如图: 在static目录下新建index.html. 3.点击启动项目 在浏览器的地址栏中访问:http://localhost:8080/ 访问 ...
- mysql的慢查询实战+sql优化
背景:使用A电脑安装mysql,B电脑通过xshell方式连接,数据内容我都已经创建好,现在我已正常的进入到mysql中 步骤1:设置慢查询日志的超时时间,先查看日志存放路径查询慢日志的地址,因为有慢 ...
- Python 语法基础
之所以学习Python,第一个是他比较简单,寒假时间充裕,而且听说功能也很不错,最重要的是,我今年的项目就要用到它. 而且刘汝佳的书上说到,一个好的Acmer要是不会一点Python那就是太可惜了.废 ...
- 2017.10.13 Java中引用类型变量的创建及使用&循环高级写法
今日内容介绍 1.引用类型变量的创建及使用 2.流程控制语句之选择语句 3.流程控制语句之循环语句 4.循环高级 ###01创建引用类型变量公式 * A: 创建引用类型变量公式 ...
- iis 发布失败原因总结
3篇文章 1. https://www.cnblogs.com/adzhouyang/p/7357086.html 2..https://blog.csdn.net/li_ser/article/de ...
- numpy中生成随机矩阵并打印出矩阵的shape
from numpy import * c=zeros((4,5)) print c.shape print numpy.random.random((2,3))
- acc_set_device_num && acc_get_device_num例程
void acc_set_device_num( int, acc_device_t ); 描述在指定类型的所有设备中, acc_set_device_num 告诉运行时库环境用哪一个设备.如果 de ...
- java并发多线程(摘自网络)
1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和 ...
- iclr2015
http://www.iclr.cc/doku.php?id=iclr2015:main#accepted_papers iclr2015的accept papers,有些看过,有些没看明白,看来还是 ...
- Java面试不得不知的程序(二)
[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 斐波那契数列:前面相邻两项之和,构 ...