Oracle 時間戳與日期的轉換


一、to_char() 與 to_date()函數
1. to_char()
將時間日期按照指定的格式輸出,得到的是字符串,而非date類型。

select sysdate,to_char(sysdate, 'yyyy-mm-dd')from dual;
select sysdate,to_char(sysdate, 'yyyy/mm/dd')from dual;
select sysdate,to_char(sysdate, 'yyyymmdd')from dual;
select sysdate,to_char(sysdate, 'yyyymmdd hh24:mi:ss')from dual;

查詢結果

2018-12-29 13:59:50 2018-12-29
2018-12-29 13:59:50 2018/12/29
2018-12-29 13:59:50 20181229
2018-12-29 13:59:50 20181229 13:59:50

也可以用to_char()得到單獨的年月日時分秒的字符串

select sysdate,to_char(sysdate,'yyyy')from dual;
select sysdate,to_char(sysdate,'mm')from dual;
select sysdate,to_char(sysdate,'hh24')from dual;
select sysdate,to_char(sysdate,'mi')from dual;

2018-12-29 13:59:50 2018
2018-12-29 13:59:50 12
2018-12-29 13:59:50 13
2018-12-29 13:04:50 04

因為結果是字符串,所以0不能省略,特別在WHERE語句中,

WHERE to_char(sysdate,'mi') = ‘04’

0省略了就查不到數據。


2. to_date()
將字符串轉換為具體指定的時間日期格式

select sysdate,to_date('20190103','yyyymmdd')from dual;
select sysdate,to_date('20190103','yyyy-mm-dd')from dual;
select sysdate,to_date('20190103','yyyy/mm/dd')from dual;
select sysdate,to_date('20190103','yyyy-mm-dd hh24:mi:ss')from dual;

查詢結果

2019/01/03 17:20:27 2019/01/03
2019/01/03 17:20:27 2019/01/03
2019/01/03 17:20:27 2019/01/03
2019/01/03 17:20:27 2019/01/03

注:
to_date()得到的日期格式是和系統的日期格式保持一致;
得到的時間為當天的 00 :00:00。


二、時間戳轉換為date格式
SELECT TO_CHAR(時間戳的那一列 / (1000 * 60 * 60 * 24) +
TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD')
AS createTime FROM 表名 ;

原理: 用to_date函數將字符串’1970-01-01 08:00:00’轉換為日期作為起始時間,同時將時間戳轉換為天數,在此基礎上將兩者相加,即為該時間戳對應的具體日期時間,最后截取我們需要的日期部分,並且取名為createTime。

需要注意幾點:
1.采用to_char函數轉換為字符串是為了后期進行傳輸;
2.從八點開始計算是采用北京時間;
3.以24小時的形式顯示出來要用HH24;
4.oracle數據庫中不區分大小寫,為了將分鍾和月份區分開來,將分鍾用mi表示;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM