最近的一個功能定時任務要求在當天凌晨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;