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

来源:这里教程网 时间:2026-03-03 21:05:23 作者:

[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 <= :endTime) --//视乎是对方的一种编程风格,T大写视乎很容易看出前面start,end是否写错。 --//前面的MM例子也是这样,也许这样容易看清前面的y有4个。 > @ 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个不行),看着这样开发 --//人员不不知道是同情还是鄙视,如果没人指出,写一辈子代码还是这样,那真是一种悲哀!!

相关推荐