日期时间格式化定时任务等常用sql

tech2025-09-28  20

oracle 日期格式

常用用到的一些简单的sql,有些是知道但不常用的话不能马上写出来比方定时时间,格式时间

得到日期的不同内容

to_char 格式化

to_char(sysdate,‘d’) 每周第几天

to_char(sysdate,‘dd’) 每月第几天

to_char(sysdate,‘ddd’) 每年第几天

to_char(sysdate,‘ww’) 每年第几周

to_char(sysdate,‘mm’) 每年第几月

to_char(sysdate,‘q’) 每年第几季

to_char(sysdate,‘yyyy’) 年

产生两个日期 时间段之间的随机日期时间 SELECT TO_DATE ( TRUNC ( DBMS_RANDOM. VALUE(TO_NUMBER (TO_CHAR (TO_DATE ('20200401', 'yyyymmdd'),'J' )), TO_NUMBER (TO_CHAR (TO_DATE ('20200630', 'yyyymmdd') + 1,'J')) )),J' ) + DBMS_RANDOM. VALUE (1, 3600) / 3600 prize_time FROM dual

格式化字符串

括号中 ¥9,999.00=¥0,000.00(0或9结果一样) to_char(1210.73, ‘$9,999.00’) 返回 ‘$1,210.73’to_char(21, ‘000099’) 返回 ‘000021’

小数点格式

如果舍去位数表明了,就按位数来,没有默认为得到整数 round(1.2345, 3) 四舍五入3位小数,trunc(1.2399, 2)保留2位剩下舍去ceil(23.33) floor(23.33) 向上舍去向下舍去trunc(23.33) 得到整数整数

更新一个表从另一个表中得到数据

update table from 这样也是可以的但是以下语句,

merge into GW_B_STINFO using shen on (GW_B_STINFO.STCD = shen.测站编码) when matched then update set GW_B_STINFO.STHN = 2

定时执行任务的语句整理

间隔/interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null时,该job执行结束后,就被从队列中删除。 假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。

.每分钟执行 Interval => TRUNC(sysdate,‘mi’) + 1/ (24*60)

每小时执行 Interval => TRUNC(sysdate,‘hh’) + 1/ (24)

.每天定时执行 例如:每天的凌晨1点执行 Interval => TRUNC(sysdate+ 1) +1/ (24)

每周定时执行 例如:每周一凌晨1点执行 Interval => TRUNC(next_day(sysdate,‘星期一’))+1/24

每月定时执行 例如:每月1日凌晨1点执行 Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24

每季度定时执行 例如每季度的第一天凌晨1点执行 Interval => TRUNC(ADD_MONTHS(SYSDATE,3),‘Q’) + 1/24

每半年定时执行 例如:每年7月1日和1月1日凌晨1点 Interval => ADD_MONTHS(trunc(sysdate,‘yyyy’),6)+1/24

.每年定时执行 例如:每年1月1日凌晨1点执行 Interval =>ADD_MONTHS(trunc(sysdate,‘yyyy’),12)+1/24

产生两个日期之间的随机日期

( SELECT TO_DATE ( TRUNC ( DBMS_RANDOM. VALUE ( TO_NUMBER ( TO_CHAR ( TO_DATE (‘20200401’, ‘yyyymmdd’), ‘J’ ) ), TO_NUMBER ( TO_CHAR ( TO_DATE (‘20200630’, ‘yyyymmdd’) + 1, ‘J’ ) ) ) ), ‘J’ ) + DBMS_RANDOM. VALUE (1, 3600) / 3600 prize_time FROM dual )

最新回复(0)