首頁 > 軟體

Oracle如何在SQL語句中對時間操作、運算

2022-09-18 22:00:11

0、date與timestamp

1)區別

date精確到年月日時分秒,timestamp更精確一些;

但這個不重要,重要的是,實踐中我從Oracle資料庫取date型別欄位,前端展示時分秒都是0,網上說資料庫型別是date取到前端就是這樣,只能精確到日,後面都是預設填0;
我給欄位換成timestamp確實問題解決了,我理解不了!

2)轉換

timeStamp --> date

TO_DATE(to_char(xxxTimestamp, 'yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd hh24:mi:ss')

date -->timeStamp

TO_TIMESTAMP(to_char(xxxDate, 'yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd hh24:mi:ss')

1、獲取系統當前時間

date型別的:

sysdate

timestamp型別的:

SYSTIMESTAMP

char型別的:

to_char(sysdate, ‘yyyy-mm-dd hh24:mi:ss’)

2、ORACLE裡獲取一個時間的年、季、月、周、日的函數:

select to_char(sysdate, ‘yyyy' ) from dual; --年
select to_char(sysdate, ‘MM' ) from dual; --月
select to_char(sysdate, ‘dd' ) from dual; --日
select to_char(sysdate, ‘Q') from dual; --季
select to_char(sysdate, ‘iw') from dual; --周–按日曆上的那種,每年有52或者53周

3、日期操作

當前時間減去7分鐘的時間

select 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 - interval ‘7' month from dual;

當前時間減去7年的時間

select sysdate - interval ‘7' year from dual;

時間間隔乘以一個數位

select sysdate - 8*interval ‘7' hour from dual;

4、常用的時間戳

//獲取當年的一月一號
to_date(concat((select to_char(sysdate,‘yyyy') from dual), ‘-01-01 00:00:00'),‘yyyy-MM-dd HH24:mi:ss') //date格式
//獲取這個月的一月一號
SELECT LAST_DAY(ADD_MONTHS(SYSDATE, -1)) + 1 FROM DUAL; //date格式

char格式

SELECT TO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE, -1)) + 1,‘yyyy-mm-dd HH24:mi:ss') FROM DUAL;

5、查詢某時間範圍

SELECT users.* 
FROM   users
WHERE  create_time >= '2021-12-01 00:00:00' 
AND  create_time <= '2021-12-06 00:00:00'

或者

SELECT users.* 
FROM   users
WHERE  create_time 
BETWEEN '2021-12-01' AND '2021-12-07';

總結

到此這篇關於Oracle如何在SQL語句中對時間操作、運算的文章就介紹到這了,更多相關Oracle對時間操作運算內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com