oracle中日期型別DATE TIMESTAMP

2021-10-16 19:48:06 字數 2251 閱讀 6655

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採用...