一、Oracle数据库to_date()和to_char()的相关
select* from T_A a where a.begintime=to_date('2013-1-1','yyyy-mm-dd');
和
select* from T_A a where to_char(a.begintime,'yyyy-mm-dd')='2013-1-1';
查询结果是一样的.
区别在于查询的处理步骤不一样.
select* from T_A a where a.begintime=to_date('2013-1-1','yyyy-mm-dd');
是先把'2013-1-1'这个字符串,转换为日期格式,然后去和数据库里面做比较.
如果有 1000行数据,那么操作就是
1次字符转换为日期, 1000次日期比较。
select* from T_A a where to_char(a.begintime,'yyyy-mm-dd')='2013-1-1';
是把数据库里面的每一行的 begintime,转换为字符格式,然后去和数据库里面做比较。
如果有 1000行数据,那么操作就是
1000次日期转换为字符, 1000次字符串比较。
二、oracle to_char 语法
TO_CHAR是把日期或数字转换为字符串,不能指定字符串长度。
使用TO_CHAR函数处理日期:
TO_CHAR(number,'格式')例如:TO_CHAR(salary,’$99,999.99’)
使用TO_CHAR函数处理日期:
TO_CHAR(date,’格式’); TO_CHAR(newdate,’yyyy-mm-dd’)
指定字符串的长度可以使用lpad或者rpad或者substring:
lpad(字段名,填充长度,填充的字符)左填充
rpad(字段名,填充长度,填充的字符)右填充
substr( string, start_position, [ length ])取得字符串中指定起始位置和长度的字符串
三、oracle数据库的 to char 和to date 区别
一、功能不同
1、to char:将时间日期按照指定的格式输出,得到的是字符串,而非date类型。
2、to date:将字符串按照指定的格式输出,得到的是日期类型。
二、语法不同
1、to char:to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')。
2、to date:to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')。
三、规则不同
1、to char:只要被转换的是一个日期,yyyy,mm,dd中间加不加连接符,加什么连接符都可以。
2、to date:第一个参数的yyyy,mm,dd之间有没有连接符。如果有,那么第二个参数必须有连接符,随便是什么连接符。
参考资料来源:百度百科-to_char()
参考资料来源:百度百科-date函数
四、如何自定义excel函数实现sql中的to_char功能
只有一个空格吗?将文本格式的文字批量转换为日期时间。如果你从8点到8点的日期,直接减去八小时不就能计算出当天的日期了吗?
这个并不难。
用TEXT+其他字符串函数就可以处理出来。
思路,先用字符串函数,例如MID,LEFT,RIGHT函数提取出相应区域的数值。然后将相应区域的数值用TEXT函数转换成可识别的日期时间格式,再减去8小时就可以了。
刚才测试了一下是可以的。如果还有问题,可以继续追问或者私信。
有了日期,再转回YYYYMMDD这种格式直接套一个TEXT函数就OK了。
关于Oracle中to_char()函数的用法(转)_tochar,oracle to_char 语法的介绍到此结束,希望对大家有所帮助。