1、date型別精確到秒,timestamp型別精確到秒的小數,
2、date型別相減,得到的結果為整型,單位是天。
timestamp型別相減,或者timestamp與date型別相減,得到的結果是interval。
date與timestamp型別加減乙個數值,得到的型別為date。
3、oracle中的日期可以直接計算,加1就是1天,加1/24就是1小時,加1/24/60就是1分鐘。
4、timestamp型別與數值加減得到的是date型別,損失了精度。可以是有時間間隔型別處理,通過interval函式得到間隔值。
select sysdate,
to_char(systimestamp, 'yyyy-mm-dd hh24:mi:ss'),
systimestamp + 1, --加 1天
to_char(systimestamp + interval '1' day, 'yyyy-mm-dd hh24:mi:ss'), --加 1天
to_char(systimestamp + interval '1' year, 'yyyy-mm-dd hh24:mi:ss'), --加 1年
to_char(systimestamp + interval '1-11' year to month,
'yyyy-mm-dd hh24:mi:ss'),--加 1年11個月
to_char(systimestamp + interval '1 1:10' day to minute,
'yyyy-mm-dd hh24:mi:ss') --加 1天 1小時 10分鐘
5、date型別可以直接加減天數,但是加減月份需要用add_months()函式。
如下面的兩條語句,2018-01-28 15:00:00+31天得到2018-02-28 15:00:00,
2018-01-28 15:00:00+32天得到2018-03-01 15:00:00
可以看到,由於2023年2月份沒有29號,oracle在天數計算時是跳過了2023年2月29號這一非法日期的。
select to_char(timestamp '2018-01-28 15:00:00' + interval '31' day,
'yyyy-mm-dd hh24:mi:ss')
from dual;
--2018-02-28 15:00:00
select to_char(timestamp '2018-01-28 15:00:00' + interval '32' day,
'yyyy-mm-dd hh24:mi:ss')
from dual;
--2018-03-01 15:00:00
同樣我們月份加減
select to_char(timestamp '2018-01-29 15:00:00' + interval '1' month,
'yyyy-mm-dd hh24:mi:ss')
from dual;
由於2023年2月29號為非法日期,oracle直接報錯
由此可見add_months()函式得到的是對應月份的最後一天。
6、獲得2個日期直接的間隔月份,可以使用函式:months_between();
例如:select months_between(date '2021-01-20',date '2020-12-01') from dual;
java中日期型別
date date new date 當new出的date物件不含引數時,date即為當前系統時間 年月日,時分秒均包含 date date new date system.currenttimemillis 帶引數時,直接以引數作為時間 thu aug 29 14 38 58 cst 201 3 ...
Oracle中日期處理
獲取oracle詳細建表語句 select dbms metadata.get ddl table t test ddl from dual 查詢資料儲存結構,字元長度 select dump 漢字 lengthb 漢字 from dual trunc把乙個日期擷取,只取到年。資料庫只是把最後5個位...
oracle中日期轉換
oracle中,日期轉換函式有很多,常用命令如下 select to char sysdate,yyyy mm dd hh24 mi ss from dual 語法 to char x format 說明 將x按format格式轉換成字串。x可以是日期或者數字或時間戳,format是乙個規定了x採用...