关于to_char和to_date两个函数

to_char函数的功能是将date、datetime、numeric的值转化成字符串表达式。其实我理解to_char的核心就是把你输入的一个日期格式的字符串,通过IFX自己定义的表达式规则匹配出来,然后做格式转化,最后拼出你想要的字符串。这里的格式转化规则需要好好学习和总结,需要深入理解。在to_date的时候其实是反过来处理的,把你输入的字符串,根据你的IFX提供的处理规则,整理出你可以使用的日期格式,输出格式需要参考DATETIME环境变量的格式。

 

to_char函数需要两个参数,第一个参数表示需要转化的源;第二个参数表示需要转化成字符串的输出格式。如果第一个参数是NULL,则函数返回值为NULL。

begin_date被定义为date类型,

SELECT TO_CHAR(begin_date, ’%A %B %d, %Y %R’) FROM tab1;

返回值的输出格式与数据库的字符集有关系:

en_us.819为:Wednesday July 25, 2013 18:45

zh_cn.gb18030-2000为:星期日  4月 21,2019 0:0

begin_date被定义为datetime year to second类型,

SELECT TO_CHAR(begin_date, ’%A %B %d, %Y %R’) FROM tab1;  输出为:星期日  4月 21,2019 10:09

SELECT TO_CHAR(begin_date, ’%A %B %d, %Y’) FROM tab1;        输出为:星期日  4月 21,2019

===================================================================================

%A   Full weekday name, as defined in the locale

%a    星期的短格式,如Sun

%B   Full month name, as defined in the locale

%b   月份的短格式,如Apr

%d   Day of the month as an integer (01 through 31). A single-digit value is preceded by a zero (0).

%Y   Year as a 4-digit decimal number

%R   Time in 24-hour notation (equivalent to %H:%M format, as defined below).

%D   %m/%d/%y 格式

%e    1-31日,前面不补0的格式

%h     只显示月份

%H    两个数字显示00-23点

%I     两个数字显示00-11

%M   表示00-59分

%T   表示%H:%M:%S 

%w   用0-6表示星期

%y   用两位数字表示年

%Fn  表示fraction的0-5位

SELECT TO_CHAR(CURRENT YEAR TO FRACTION(5),"%Y-%m-%d %H:%M:%S.%F") FROM sysmaster:sysdual;

如果你省略了第二个参数,没有设置字符串的输出格式,to_char会使用环境变量DBTIME或DBDATE设置的格式,如果不在默认区域会使用环境变量GL_DATETIME、GL_DATE指定的格式。

select gbase_to_char(id,"-$******.*****") from t   输出格式为: $123456.78920   

我理解数字转化成字符的使用概率并不高,通常是直接用数据库的隐式转化就解决了:

create table t (id decimal(10,4));

create table t1 (id varchar(255))

insert into t1 select id from t;     隐式转化

 

to_date函数的目的是转化一个字符串为一个datetime类型的值。这个过程可以理解成to_char函数的逆过程。

UPDATE tab1  SET begin_date = TO_DATE(’Wednesday July 25, 2007 18:45’,’%A %B %d, %Y %R’);

select gbase_to_date(substr("Mon Aug 05 11:25:35 CST 2019",0,19)||substr("Mon Aug 05 11:25:35 CST 2019",24,5),'%a %b %d %T %Y') from t1

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我曾阿牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值