Oracle中日期的使用方法實(shí)例
目錄
- 前言
- 1 日期等于\大于\小于
- 2 日期差值計(jì)算
- 1 直接將兩個(gè)時(shí)間來相減
- 2 時(shí)間和日期的兩層轉(zhuǎn)換
- 3 使用trunc函數(shù)
- 總結(jié)
前言
在使用sql函數(shù)時(shí),因項(xiàng)目數(shù)據(jù)庫(kù)不同,導(dǎo)致sql中日期的使用方法大不相同, 一些常見的日期計(jì)算,都有不同的應(yīng)用,故整理記錄一下Oracle的日期用法。
以u(píng)ser表為例
CREATE TABLE "SCOTT"."user" ( "id" NUMBER(20,0) NOT NULL ENABLE, "name" VARCHAR2(30), "age" NUMBER(11,0), "email" VARCHAR2(50), "crt_time" DATE, PRIMARY KEY ("id") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 NOCOMPRESS LOGGING TABLESPACE "USERS" ENABLE ) SEGMENT CREATION DEFERRED PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING TABLESPACE "USERS" -- 添加基礎(chǔ)數(shù)據(jù) INSERT INTO "SCOTT"."user"("id", "name", "age", "email", "crt_time") VALUES ("1", "Jone", "18", """test1@baomidou.com", TO_DATE("2022-04-01 22:20:02", "SYYYY-MM-DD HH24:MI:SS")); INSERT INTO "SCOTT"."user"("id", "name", "age", "email", "crt_time") VALUES ("2", "Jone", "20", """test2@baomidou.com", TO_DATE("2022-04-02 22:20:02", "SYYYY-MM-DD HH24:MI:SS")); INSERT INTO "SCOTT"."user"("id", "name", "age", "email", "crt_time") VALUES ("3", "Jone", "28", """test3@baomidou.com", TO_DATE("2022-04-03 22:20:02", "SYYYY-MM-DD HH24:MI:SS")); INSERT INTO "SCOTT"."user"("id", "name", "age", "email", "crt_time") VALUES ("4", "Jone", "21", """test4@baomidou.com", TO_DATE("2022-04-04 22:20:02", "SYYYY-MM-DD HH24:MI:SS")); INSERT INTO "SCOTT"."user"("id", "name", "age", "email", "crt_time") VALUES ("5", "Jone", "24", """test5@baomidou.com", TO_DATE("2022-04-05 22:20:02", "SYYYY-MM-DD HH24:MI:SS")); INSERT INTO "SCOTT"."user"("id", "name", "age", "email", "crt_time") VALUES ("6", "Jone", "12", """test6@baomidou.com", TO_DATE("2022-04-06 22:20:02", "SYYYY-MM-DD HH24:MI:SS"));
1 日期等于\大于\小于
Oracle中日期的大小比較,通常是轉(zhuǎn)換成字符串來進(jìn)行比較.
說明:
- dual是oracle中定義的一個(gè)內(nèi)部表,只有一行一列
- SYSDATE函數(shù)表示當(dāng)前時(shí)間
- to_char(date,‘format’)函數(shù), 參數(shù)date為日期類型,參數(shù)format表示轉(zhuǎn)換的格式,常用的是'yyyy-mm-dd hh24:mi:ss' (大小寫敏感)
-- 查看兩個(gè)時(shí)間 select TO_DATE("2022-04-04 22:20:02", "SYYYY-MM-DD HH24:MI:SS") , SYSDATE FROM dual -- 結(jié)果 -- 2022-04-04 22:20:02 2022-04-10 22:31:43 -- 簡(jiǎn)單案例 -- 1 時(shí)間比較 因傳入時(shí)間小于當(dāng)前時(shí)間 結(jié)果集為空 select TO_DATE("2022-04-04 22:20:02", "SYYYY-MM-DD HH24:MI:SS") , SYSDATE FROM dual where TO_DATE("2022-04-04 22:20:02", "SYYYY-MM-DD HH24:MI:SS") > SYSDATE -- 空串 空串 -- 2 時(shí)間比較 因傳入時(shí)間小于當(dāng)前時(shí)間 結(jié)果集有值 select TO_DATE("2022-04-04 22:20:02", "SYYYY-MM-DD HH24:MI:SS") , SYSDATE FROM dual where TO_DATE("2022-04-04 22:20:02", "SYYYY-MM-DD HH24:MI:SS") < SYSDATE -- 2022-04-04 22:20:02 2022-04-10 22:37:50
2 日期差值計(jì)算
需求: 計(jì)算兩個(gè)時(shí)間的天數(shù)差
1 直接將兩個(gè)時(shí)間來相減
兩個(gè)日期相減,得到的是精度為時(shí)分秒的數(shù)據(jù),不符合要求
SELECT SYSDATE- to_date("2022-04-10 22:20:02","yyyy-mm-dd hh24:mi:ss") FROM dual -- 結(jié)果 0.0181365740740740740740740740740740740741
2 時(shí)間和日期的兩層轉(zhuǎn)換
to_date(string,‘format’)函數(shù),是將字符串轉(zhuǎn)換為date時(shí)間.
SELECT to_date(to_char(SYSDATE,"yyyy-mm-dd"),"YYYY-MM-DD HH24:MI:SS") - to_date(to_char(to_date( "2022-04-10 22:20:02", "YYYY-MM-DD HH24:MI:SS" ) ,"yyyy-mm-dd"),"YYYY-MM-DD HH24:MI:SS") FROM dual; -- 結(jié)果: 0
此種方法比較繁瑣,且經(jīng)過多次轉(zhuǎn)換,效率較低.
3 使用trunc函數(shù)
trunc()函數(shù).
作用: 用于截取時(shí)間或者數(shù)值,返回指定的值.
日期處理:
TRUNC(date,[format])
- date 為必要參數(shù),是輸入的一個(gè)date日期值.
- format參數(shù)可忽略,指定日期格式,缺省時(shí)表示指定日期的0點(diǎn).
SELECT SYSDATE, to_date( "2022-04-10 22:20:02", "YYYY-MM-DD HH24:MI:SS" ), trunc(SYSDATE) - trunc(to_date( "2022-04-10 22:20:02", "YYYY-MM-DD HH24:MI:SS" )) FROM dual;
此外,該函數(shù)還可以用于數(shù)值處理.
TRUNC(number,[decimals])
- number 為必要參數(shù),是輸入的一個(gè)number數(shù)值.
- decimals 參數(shù)可忽略,指定截取的位數(shù),缺省時(shí)表示截掉小數(shù)點(diǎn)后邊的值
SELECT 3.0, 2.22, trunc(3.0) - trunc(2.22,1) FROM dual; -- 結(jié)果 3 2.22 0.8
總結(jié)
到此這篇關(guān)于Oracle中日期使用的文章就介紹到這了,更多相關(guān)Oracle日期使用內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!
相關(guān)文章:
