最近的一个功能定时任务要求在当天凌晨2点生成前一天的数据。涉及到数据库时间的操作,特此记录一下,整理关于日期获取的笔记如下
-- 获取当前系统的前一天日期0点到23:59:59的时间 select TRUNC(SYSDATE - 1) , TRUNC(SYSDATE - 1)+1-1/86400 from dual; --获取当天时间的0时0分 select TRUNC(SYSDATE) FROM dual; --获取当天时间的23点59分59秒(在当天0时0分0秒的基础上加1天后再减1秒) SELECT TRUNC(SYSDATE)+1-1/86400 FROM dual; --取得当前日期是一个星期中的第几天,注意:星期日是第一天 select to_char(sysdate,'D'),to_char(sysdate,'DAY') from dual; --获取当前月的第一天和最后一天 select to_char(sysdate,'yyyy-mm')||'-01' firstday,to_char(last_day(sysdate),'yyyy-mm-dd') lastday from dual; --获取当前月份 SELECT EXTRACT(MONTH FROM sysdate) FROM DUAL; --求出当前日期的下一个指定礼拜是几号,意思就是当前日期的下一个星期一是几号 select next_day(sysdate,'星期一') from dual; --返回当前日期 select trunc(sysdate)from dual; --返回当前小时 select trunc(sysdate,'hh')from dual; --返回当前时间的分钟,没有秒的精确,只有毫秒。 select trunc(sysdate,'mi')from dual; --返回当前星期的第一天(为星期天,工作的第一天为星期一) select trunc(sysdate,'d')from dual; --返回当前年份的第一天 select trunc(sysdate,'yyyy')from dual; --返回当前月份的第一天 select trunc(sysdate,'mm')from dual; --求当前月份的最后一天 select last_day(sysdate) from dual; --求当前日期添加月份过后的日期 select add_months(sysdate,2) from dual; --取出当前日期的年份 select extract(year from sysdate) from dual; --取出当前日期的月份 select extract(month from sysdate) from dual; --取出当前日期的天数 select extract(day from sysdate) from dual; --拼接日期,将年月日从系统中取出然后拼接年,月,日 select extract(year from sysdate) ||'年'||extract(month from sysdate) ||'月'||extract(day from sysdate) ||'日' from dual; --时间戳以获取精确的时间 select systimestamp as 国际时间 from dual; --以指定格式获取日期 select TO_CHAR(sysdate,'yyyy-mm-dd') from dual; --获取当前时间一个月之后的时间 select add_months(sysdate,1)from dual; --获取到当前时间半年之后的时间 select add_months(sysdate,6)from dual; --to_char()函数,将日期转换为字符串表示 select to_char(sysdate,'yyyy"年"mm"月"dd"日"')from dual; --将数字转换为指定格式,例如转换为货币形式 select to_char(123,'$9,999,999.99')from dual; --to_number()函数,将一个数字字符串转换为数字,以便进行计算 select to_number('1234567.08') from dual;