關於Oracle資料庫的時間查詢

weixin_41648325發表於2018-06-06

to_date()與24小時製表示法及mm分鐘的顯示:
一、在使用Oracle的to_date函式來做日期轉換時,很多Java程式設計師也許會和我一樣,直覺的採用“yyyy-MM-ddHH:mm:ss”的格式作為格式進行轉換,但是在Oracle中會引起錯誤:“ORA 01810 格式程式碼出現兩次”。
如:selectto_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;
原因是SQL中不區分大小寫,MM和mm被認為是相同的格式程式碼,所以Oracle的SQL採用了mi代替分鐘。
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
 
二、另要以24小時的形式顯示出來要用HH24
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分鐘
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm會顯示月份
to_date() 與 to_char() 日期和字串轉換 
to_date("要轉換的字串","轉換的格式")   兩個引數的格式必須匹配,否則會報錯。
即按照第二個引數的格式解釋第一個引數。
to_char(日期,"轉換格式" ) 即把給定的日期按照“轉換格式”轉換。
轉換的格式:
 
表示year的:y 表示年的最後一位 yy 表示年的最後2位 yyy 表示年的最後3位 yyyy 用4位數表示年
表示month的:mm 用2位數字表示月;mon 用簡寫形式比如11月或者nov ;month 用全稱比如11月或者november
表示day的:dd 表示當月第幾天;ddd表示當年第幾天;dy 當週第幾天簡寫比如星期五或者fri;day當週第幾天全寫
比如星期五或者friday。
表示hour的:hh 2位數表示小時 12進位制; hh24 2位數表示小時 24小時
表示minute的:mi 2位數表示分鐘
表示second的:ss 2位數表示秒 60進位制
表示季度的:q 一位數表示季度(1-4)
另外還有ww 用來表示當年第幾周 w用來表示當月第幾周。
24小時制下的時間範圍:00:00:00-23:59:59
12小時制下的時間範圍:1:00:00-12:59:59
 
比如:
selectto_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual   //顯示:08-11-07 13:22:42
selectto_date('2005-12-25,13:25:59','yyyy-mm-dd,hh24:mi:ss') from dual //顯示:2005-12-25 13:25:59
而如果把上式寫作:
select to_date('2005-12-25,13:25:59','yyyy-mm-dd,hh:mi:ss')from dual,則會報錯,因為小時hh是12進位制,13為非法輸入,不能匹配。
 
補充:
當前時間減去7分鐘的時間 
select sysdate,sysdate - interval '7' MINUTE from dual 
當前時間減去7小時的時間 
select sysdate - interval '7' hour from dual 
當前時間減去7天的時間 
select sysdate - interval ’7’ day from dual 
當前時間減去7月的時間 
select sysdate,sysdate - interval '7' month from dual 
當前時間減去7年的時間 
select sysdate,sysdate - interval '7' year from dual 
時間間隔乘以一個數字 
select sysdate,sysdate - 8*interval '7' hour from dual
time欄位是DATETIME型別
select * from table_name where jxlx='03002' and  time betweento_date('2007-9-1','yyyy-mm-dd') and to_date('2007-9-20 23:59:59','yyyy-mm-ddhh24:mi:ss)
 
還有一個to_char()
與null值比較:is not null,is null 
 如  select * fromorders where price is null ,price等於null
如: select * fromorders where price is not null ,  price不等於null

相關文章