使用Oracle的date類型時,最好使用24小時制。date類型精確的秒。
oracle的日期在24小時制中00:00:00 在Oracle中表示為叫做上午12點,也就是零點。我們中午12點叫做下午12點。呵呵。
世界是這樣循環的 : 上午12點 -上午12點01 -上午1點 --上午11:59 :59 --下午12點 - 下午12點 02 - 下午1點 -下午11:59:59
關於日期函數 add_months (d,n) 和last_day(d),round(d,【fmt】)
add_months 中的d 如果沒有時間值,結果為下個月的當前日的開始日期 -00:00:00上午12點。 如果有時間值 ,結果為下月的當前日的時間加時間值。
如果d為當前月的最後一天,結果為下個月的最後一天。哈哈。
例如:add_months(to_date(''2007-02-27 12:01'',''yyyy-mm-dd hh24:mi''),1) = 2007-3-27 12:01:00
add_months(to_date(''2007-02-27'',''yyyy-mm-dd ''),1) = 2007-03-27 00:00:00
add_months(to_date(''2007-02-28 12:01'',''yyyy-mm-dd hh24:mi''),1) = 2007-3-31 12:01:00
last_day 當前月的最後一天的00:00。
round 四捨五入 ,格式為year ,捨入到1月1日, month ,捨入到該月第一日, 大於16日,為下月。day 最近的星期天。
例如:
round( (to_date(''2007-10-19 13:00:00 '',''yyyy-mm-dd hh24:mi:ss'') ),''day'' ) = 2007-10-21
trunc 與round相似,但不四捨五入。
trunc(d,fmt)
extract (fmt from d)
fmt 可取為 year, month, day , hour, minute ,second .
總結:Oracle的日期函數默認操作日期,既不包括時間。 如果有時間的話就加上時間,但不做處理。默認都是day。
Oracle關於時間/日期的操作
1.日期時間間隔操作
當前時間減去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 ’2’ hour from dual
2.日期到字符操作
select sysdate,to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual
select sysdate,to_char(sysdate,’yyyy-mm-dd hh:mi:ss’) from dual
select sysdate,to_char(sysdate,’yyyy-ddd hh:mi:ss’) from dual
select sysdate,to_char(sysdate,’yyyy-mm iw-d hh:mi:ss’) from dual
參考oracle的相關關文檔(Oracle901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
3. 字符到日期操作
select to_date(’2003-10-17 21:15:37’,’yyyy-mm-dd hh24:mi:ss’) from dual
具體用法和上面的to_char差不多。