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

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’表示。
  1. .每分钟执行
    Interval => TRUNC(sysdate,‘mi’) + 1/ (24*60)

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

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

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

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

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

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

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

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

(
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
)

おすすめ

転載: blog.csdn.net/weixin_41086086/article/details/108401431