[20241222]关于日期输出格式问题.txt

李优秀  论坛元老 | 2024-12-23 22:20:09 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1387|帖子 1387|积分 4161

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
[20241222]关于日期输出格式问题.txt

--//https://connor-mcdonald.com/ 网站写了一系列相关blog,命名为Kris Kringle系列。
--//其中链接提到的例子https://connor-mcdonald.com/2024/12/21/kris-kringle-the-database-what-day-is-it/
--//重复测试:

1.环境:
SCOTT@book01p> @ ver2
==============================
PORT_STRING                   : x86_64/Linux 2.4.xx
VERSION                       : 21.0.0.0.0
BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID                        : 0
PL/SQL procedure successfully completed.

2.测试:
SCOTT@book01p> select '~'||to_char(sysdate,'DAY')||'~' from dual;

'~'||TO_CHAR(SY
---------------
~SUNDAY   ~

--//现实上输出是char类型,留意结尾有空格,占用9个字符。规避背面的空格要加入FM。

SCOTT@book01p> select '~'||to_char(sysdate,'FMDAY')||'~' from dual;
'~'||TO_CHAR(SY
---------------
~SUNDAY~

--//现实上在输出格式上还有一些细节,看下面的例子:

$ echo {D,d}{A,a}{Y,y}
DAY DAy DaY Day dAY dAy daY day

$ echo set feed off head off ; echo -e {D,d}{A,a}{Y,y}"\n" | xargs -IQ echo "select 'Q',to_char(sysdate,'Q') from dual ;"
set feed off head off
select 'DAY',to_char(sysdate,'DAY') from dual ;
select 'DAy',to_char(sysdate,'DAy') from dual ;
select 'DaY',to_char(sysdate,'DaY') from dual ;
select 'Day',to_char(sysdate,'Day') from dual ;
select 'dAY',to_char(sysdate,'dAY') from dual ;
select 'dAy',to_char(sysdate,'dAy') from dual ;
select 'daY',to_char(sysdate,'daY') from dual ;
select 'day',to_char(sysdate,'day') from dual ;

$ (echo set feed off head off ; echo -e {D,d}{A,a}{Y,y}"\n" | xargs -IQ echo "select 'Q' str ,to_char(sysdate,'Q') to_c from dual ;")| sqlplus -s -l / as sysdba | sed '/^$/d'
DAY MONDAY
DAy MONDAY
DaY Monday
Day Monday
dAY monday
dAy monday
daY monday
day monday
--//自己可以总结其中的差异:
--//1.格式前面2个字符大写的,输出全部大写。
--//2.格式第1个字符大写的,第2个小写的,输出第1个字符大写,其他小写。
--//3.格式第1个字符小写的,输出全部小写。
--//这些大概属于英语的风俗用法。

3.画外:
--//之所以提及这些问题,最近恰好在优化一个项目,我发现写代码看谓词出现类型如下环境:
TO_CHAR (SCHEDULED_DATE_TIME, 'yyyyMMdd') = TO_CHAR (SYSDATE, 'yyyyMMdd')

OR (START_DATE_TIME >= :startTime AND START_DATE_TIME  @ sql_id a5a47dnwfd100
-- SQL_ID = a5a47dnwfd100 come from shared pool
SELECT d.label as dept,substr(t.RECORDDATE,0,10) as 日期,count (*) AS 人数
 FROM TEMPERATURE t  left join s_departments d on d.CODE=t.dept
 where to_date(t.RECORDDATE,'yyyy-MM-dd hh24:mi:ss')+7 >sysdate and value >=37.3
 GROUP by d.label,substr(t.RECORDDATE,0,10)
 order by substr(t.RECORDDATE,0,10) desc;

--//我不知道为什么,大部分代码出现的格式中央的MM都是选择大写,感觉很怪异,当然大概是编写者的一个风格。
--//不过关于谓词利用函数,这些已经讲了许多次,照旧有人如许写,当然建立函数索引问题就可以办理(最后1个不可),看着如许开发
--//职员不不知道是同情照旧鄙视,如果没人指出,写一辈子代码照旧如许,那真是一种悲哀!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

李优秀

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表