TO_CHAR函数的几个细节

日期和字符串相互转化在PLSQL中经常用到,尤其是TO_CHAR,常用于前台显示日期,Oracle提供的函数功能很强大,但如果我们不了解,可能会使用一些复杂的方法去实现一个很小的功能。

我看到过一些开发人员为了获取”2018年3月5日”这样的格式写了以下的实现:

select to_char(sysdate,'yyyy')||'年'||ltrim(to_char(sysdate,'mm'),'0')||'月'||to_char(sysdate,'dd')||'日'
  from dual;

而正确的写法是:

SQL> select to_char(sysdate,'fmyyyy""mm""dd""') from dual;
TO_CHAR(SYSDATE,'FMYYYY""MM"
-----------------------------
2018410

这里有2个技术细节:

1.双引号

可以把任何字符都放进去,比如:

SQL> select to_char(sysdate,'"yyyy="yyyy" mm="mm" dd="dd') from dual;
TO_CHAR(SYSDATE,'"YYYY="YYYY"M
------------------------------
yyyy=2018 mm=04 dd=10

2.FM修饰符(不区分大小写)

2.1.用于裁掉月和日的前导0,比如

SQL> select to_char(date'2018-02-01','yyyy,mm,dd') from dual;
TO_CHAR(DATE'2018-02-01','YYYY
------------------------------
2018,02,01
SQL> select to_char(date'2018-02-01','fmyyyy,mm,dd') from dual;
TO_CHAR(DATE'2018-02-01','FMYY
------------------------------
2018,2,1

2.2.fm修饰符同样可以用于去掉将数字to_char时产生的空格字符。比如:

SQL> select '*'||to_char(89,'9990.00') from dual;
'*'||TO_CHAR(89,'9990.00')
--------------------------
*   89.00
SQL> select '*'||to_char(89,'fm9990.00') from dual;
'*'||TO_CHAR(89,'FM9990.00')
----------------------------
*89.00
  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 这个错误提示意味着你在调用 `drawStr` 函数时,提供的参数不符合函数所需的参数类型或者数量。 具体地说,你提供了一个 `tm*` 类型的参数,但是 `drawStr` 函数并不接受这种类型的参数。可能的解决方法是将参数转换成 `const char*` 类型,或者使用一个合适的函数来处理 `tm*` 类型的数据,并将其转换为一个字符串。另外,还需要检查参数的数量是否正确。 如果你能提供更多的代码细节,我可以给出更具体的建议。 ### 回答2: 这个错误是由于在调用函数`drawStr`时,传入的参数类型不匹配所导致的。函数原型要求传入的第四个参数是一个`const char`类型的字符串,但你传入的是一个`tm*`类型的指针。请检查你的代码,确保传入的参数类型正确。如果需要在屏幕上显示时间信息,你可能需要先将`tm*`类型的指针转换为字符串类型,然后再传入`drawStr`函数中。 ### 回答3: 这个错误的含义是在调用函数`U8G2_SSD1306_128X64_NONAME_F_SW_I2C::drawStr`时,没有找到匹配的函数函数的参数包括一个`int`类型的x坐标、一个`int`类型的y坐标、一个`tm`类型的指针以及一个长度为9的字符数组。 这个错误通常发生在以下几种情况下: 1. 参数类型不匹配:函数的参数数量、类型或顺序与调用时提供的参数不匹配。你需要确认你提供的实参是否与函数声明所要求的参数类型相匹配。 2. 函数声明不正确:你可能没有正确地声明或定义`U8G2_SSD1306_128X64_NONAME_F_SW_I2C::drawStr`函数,导致编译器无法找到匹配的函数。你需要检查函数声明和实现是否正确,并且在调用函数之前正确地引入函数的定义。 3. 函数不存在:你可能没有包含所需的头文件,或者你正在调用的函数不存在于你的代码中。你需要确保你的代码中包含了正确的头文件,并且函数的实现已经存在。 综上所述,当你遇到这个错误时,你需要仔细检查函数调用的参数是否正确,并确保函数的声明和实现都是正确的。如果问题仍然存在,你可以进一步查看编译器的详细错误信息以及相关的文档或资源,以获得更多的帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值