最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle中的時(shí)間類型使用及說明

 更新時(shí)間:2025年09月10日 08:51:17   作者:不怕貓的耗子A  
Oracle時(shí)間類型包括DATE(精確到秒)和TIMESTAMP(支持小數(shù)秒及時(shí)區(qū)),日期處理函數(shù)如sysdate、systimestamp、to_date/to_timestamp用于轉(zhuǎn)換和操作時(shí)間數(shù)據(jù),日期加減可通過直接數(shù)值運(yùn)算、add_months或interval實(shí)現(xiàn),且Oracle一周從周日開始,與MySQL有格式差異

Oracle中的時(shí)間類型

1、Oracle中的時(shí)間類型只有date和TIMESTAMP,TIMESTAMP是比date更精確的類型

DATE類型:ORACLE最常用的日期類型,它可以保存日期和時(shí)間,常用日期處理都可以采用這種類型

TIMESTAMP類型:ORACLE常用的日期類型,它與date的區(qū)別是TIMESTAMP類型不僅可以保存日期和時(shí)間,還能保存小數(shù)秒,小數(shù)位數(shù)可以指定為0-9,默認(rèn)為6位

2、日期時(shí)間函數(shù)用于處理時(shí)間類型的數(shù)據(jù),Oracle中提供了很多和日期相關(guān)的函數(shù)。并且包括了日期的加減,在日期的加減是有一些規(guī)律

⑴日期 - 數(shù)字 = 日期

⑵日期 + 數(shù)字 = 日期(天)

⑶日期 - 日期 = 數(shù)字(天)

⑷在Oracle中,date類型可以直接進(jìn)行加減天數(shù),而加減月份要用add_months函數(shù)

⑸TIMESTAMP日期類型如果與數(shù)值進(jìn)行加減運(yùn)算會(huì)自動(dòng)轉(zhuǎn)換為DATE型,也就是說小數(shù)秒會(huì)自動(dòng)去除

3、在Oracle中準(zhǔn)確來說一個(gè)禮拜是從星期日開始到星期六結(jié)束的,其中時(shí)間差以天數(shù)為單位

Oracle中的date類型

date類型:表示年月日時(shí)分秒

⑴其展示格式既可以為:YYYY/MM/DD,也可以為YYYY/MM/DD HH24:MI:SS

⑵其存儲(chǔ)格式只有一種:YYYY/MM/DD HH24:MI:SS

⑶即,date類型的值在數(shù)據(jù)庫(kù)圖形界面中可以有不同的顯示格式(具體的顯示格式由工具設(shè)置決定),但其實(shí)際儲(chǔ)存的格式只有一種

⑷當(dāng)你只存年月日時(shí),date實(shí)際存儲(chǔ)的是:年月日0時(shí)0分0秒,在plsql中,其展示格式為:YYYY/MM/DD

  • 例1:

Oracle中的timestamp類型

1、date和timestamp都是對(duì)日期和時(shí)間的表示,只是兩種類型的精確度不同,前者精確到秒,后者精確到小數(shù)秒

2、timestamp簡(jiǎn)稱時(shí)間戳。時(shí)間戳可以存儲(chǔ)世紀(jì)、4位年、月、日、時(shí)(以24小時(shí)格式)、分、秒。與DATE類型相比,時(shí)間戳具有以下優(yōu)點(diǎn):

⑴時(shí)間戳可以存儲(chǔ)秒的小數(shù)位

⑵時(shí)間戳可以存儲(chǔ)時(shí)區(qū)

3、TIMESTAMP數(shù)據(jù)類型,它包括了所有DATE數(shù)據(jù)類型的年月日時(shí)分秒的信息,而且包括了小數(shù)秒的信息。如果想把DATE類型轉(zhuǎn)換成TIMESTAMP類型,就使用CAST函數(shù)

Oracle中的日期格式

格式描述
YYYY四位表示的年份
YYY,YY,Y年份的最后三位、兩位或一位,缺省為當(dāng)前世紀(jì)
MM01~12的月份編號(hào)
MONTH九個(gè)字符表示的月份,右邊用空格填補(bǔ)
MON三位字符的月份縮寫
WW一年中的星期
D星期中的第幾天
DD月份中的第幾天
DDD年所中的第幾天
DAY九個(gè)字符表示的天的全稱,右邊用空格補(bǔ)齊
HH,HH12一天中的第幾個(gè)小時(shí),12進(jìn)制表示法
HH24一天中的第幾個(gè)小時(shí),取值為00~23
MI一小時(shí)中的分鐘
SS一分鐘中的秒
SSSS從午夜開始過去的秒數(shù)

Oracle時(shí)間函數(shù)

sysdate

作用:sysdate函數(shù)用于返回當(dāng)前系統(tǒng)的時(shí)間(返回date數(shù)據(jù)類型)

  • 例2:查詢

  • 例2_1:插入
sql:insert into USER_INFO (ID,NAME,COUNTRY,DATE_TIME,TIMESTAMP) values(3,'王五','China',sysdate,sysdate)

systimestamp

作用:在Oracle中,systimestamp函數(shù)返回本機(jī)數(shù)據(jù)庫(kù)上當(dāng)前系統(tǒng)日期和時(shí)間(包括微秒和時(shí)區(qū))

  • 例3:查詢

  • 例3_1:插入
insert into USER_INFO (ID,NAME,COUNTRY,DATE_TIME,TIMESTAMP) values(4,'李六','China',systimestamp,systimestamp)

注:可以看出

sysdate函數(shù)最好用于date類型的數(shù)據(jù),systimestamp最好用于timestamp類型的數(shù)據(jù)。當(dāng)然兩種可以混用,只是說有點(diǎn)小差別

to_date()

作用:將字符類型按一定格式轉(zhuǎn)化為日期類型

  • 例4:查詢數(shù)據(jù)

  • 例4_1:插入數(shù)據(jù)
INSERT INTO USER_INFO (ID,NAME,CREATE_TIME,UPDATE_TIME) VALUES (9,'小m',to_date('2020-07-29 18:00:00','yyyy-mm-dd hh24:mi:ss'),to_date('2020-07-29 18:00:00','yyyy-mm-dd hh24:mi:ss'))

注:

1、to_date()只能格式化不帶毫秒級(jí)別的時(shí)間型字符串

  • ⑴to_date()的作用是將字符串時(shí)間轉(zhuǎn)化為日期類型,日期類型就有年月日時(shí)分秒

2、如果字段是一個(gè)timetsmp類型的,那么就會(huì)默認(rèn)毫秒級(jí)別為0

3、Oracle根據(jù)時(shí)間來查詢數(shù)據(jù)跟Mysql是有很大區(qū)別的

  • ⑴在Mysql中可以直接根據(jù)時(shí)間字符串來進(jìn)行查詢:SELECT * FROM roleinfo WHERE logintime = "2019-01-25";
  • ⑵在Oracle中根據(jù)時(shí)間來查詢時(shí),就必須先把時(shí)間字符串轉(zhuǎn)為date類型

4、小時(shí)格式化:不帶24時(shí),默認(rèn)為12小時(shí)制,24小時(shí)格式轉(zhuǎn)換時(shí)需要指明

  • 例4_2:

to_timestamp()

作用:將字符類型按一定格式轉(zhuǎn)化為日期時(shí)間戳類型(timestamp類型)

  • 例4_3:查詢數(shù)據(jù)

  • 例4_4:
insert into user_info (ID,
NAME,
COUNTRY,
DATE_TIME,
TIMESTAMP,
DEPT_ID,
EMPLOYEE_NO,
LEADER_NO) values (6,'LL','yy',to_timestamp('2020-07-30 20:30:30.123400','yyyy-mm-dd hh24:mi:ss.ff'),to_timestamp('2020-07-30 20:30:30.123','yyyy-mm-dd hh24:mi:ss.ff3'),1,1,1)

to_char()

1、作用:將日期轉(zhuǎn)按一定格式換成字符類型

2、在格式化timestamp類型的時(shí)間值時(shí),可以根據(jù)需要來格式化毫秒

  • ff:6位毫秒值
  • ff3:3位毫秒值
  • ⑶也可以不帶毫秒值

3、如果是在格式化一個(gè)date類型的時(shí)間值時(shí),那么用于格式字符串就不能加毫秒?yún)?shù)了,date類型中沒有毫秒

4、date類型只能精確到秒,要想精確到毫秒,需要使用timestamp類型

  • 例5:查詢數(shù)據(jù)
select to_char(CREATE_TIME,'yyyy-mm-dd hh24:mi:ss'),to_char(UPDATE_TIME,'yyyy-mm-dd hh24:mi:ss.ff') from USER_INFO where CREATE_TIME > to_date('2020-07-29 19:00:00','yyyy-mm-dd hh24:mi:ss');

  • 例5_1:不帶毫秒

  • 例5_2:帶3位毫秒

  • 例5_3:其他
select to_char(sysdate,'yyyy') as nowYear   from dual;   --獲取時(shí)間的年  
select to_char(sysdate,'mm')    as nowMonth from dual;   --獲取時(shí)間的月  
select to_char(sysdate,'dd')    as nowDay    from dual;   --獲取時(shí)間的日  
select to_char(sysdate,'hh24') as nowHour   from dual;   --獲取時(shí)間的時(shí)  
select to_char(sysdate,'mi')    as nowMinute from dual;   --獲取時(shí)間的分  
select to_char(sysdate,'ss')    as nowSecond from dual;   --獲取時(shí)間的秒
  • 例5_4:查詢數(shù)據(jù)

注:

雖然sysdate、systimestamp、to_date()、to_timestamp()都可以用于生成一個(gè)date類型或timestamp類型,但是會(huì)有默認(rèn)的一些差距。因此還是不要混用的好,字段本身是什么類型就使用對(duì)應(yīng)類型的函數(shù)來創(chuàng)建一個(gè)時(shí)間值

生成一個(gè)date類型:使用sysdate或to_date()

生成一個(gè)timestamp類型:使用systimestamp或to_timestamp()

將一個(gè)date類型或timestamp類型的時(shí)間值轉(zhuǎn)為字符串型:使用to_char(),只是說在指定格式化格式時(shí)需要區(qū)分好

Oracle日期加減

Oracle中日期類型進(jìn)行加減可以使用多種方式,以下介紹三種

  • ⑴一種是針對(duì)天的操作:適用于對(duì)日,時(shí),分,秒的操作
  • ⑵一種是對(duì)月的操作:適用于月,年的操作
  • ⑶一種是使用INTERVAL函數(shù):適用于年,月,日,時(shí),分,秒的操作

直接加減數(shù)字

1、針對(duì)天的加減主要是在sysdate上直接進(jìn)行日,時(shí),分,秒的加減

2、Oracle中使用sysdate函數(shù)來獲取當(dāng)前系統(tǒng)時(shí)間

方法描述
SYSDATE當(dāng)前時(shí)間
SYSDATE+1加一天
SYSDATE+(1/24)加一小時(shí)
SYSDATE+(1/24/60)加一分鐘
SYSDATE+(1/24/60/60)加一秒鐘
SYSDATE-1減一天
  • 例6:查詢數(shù)據(jù)

  • 例6_1:插入數(shù)據(jù)

通過ADD_MONTHS()函數(shù)

方法描述
ADD_MONTHS(SYSDATE, 1)加一月
ADD_MONTHS(SYSDATE, -1)減一月
ADD_MONTHS(SYSDATE, 1*12)加一年
ADD_MONTHS(SYSDATE, -1*12)減一年

使用INTERVAL函數(shù)

方法描述
SYSDATE + INTERVAL '1' YEAR加一年
SYSDATE + INTERVAL '-1' YEAR減一年
SYSDATE + INTERVAL '1' MONTH加一月
SYSDATE + INTERVAL '1' DAY加一天
SYSDATE + INTERVAL '1' HOUR加一小時(shí)
SYSDATE + INTERVAL '1' MINUTE加一分鐘
SYSDATE + INTERVAL '1' SECOND加一秒

trunc()函數(shù)

說明:Oracle中的trunc()函數(shù)是對(duì)時(shí)間類型或者數(shù)字進(jìn)行截取操作的

語法:TRUNC(number,num_digits)

參數(shù):

⑴Number:需要截尾取整的數(shù)字或時(shí)間

⑵Num_digits:用于指定取整精度的數(shù)字。Num_digits的默認(rèn)值 0

注:

1、TRUNC()函數(shù)截取時(shí)不進(jìn)行四舍五入

2、to_char函數(shù)支持date和timestamp,但是trunc卻不支持TIMESTAMP數(shù)據(jù)類型

處理日期

TRUNC()函數(shù)對(duì)于日期的處理方式為:截取的部分保留其值,不截取的部分保存為0

方法描述
trunc(sysdate,'dd')返回當(dāng)前年月日(精確到天)
trunc(sysdate,'hh')返回當(dāng)前時(shí)間的年月日時(shí)部分(精確到小時(shí))
trunc(sysdate,'mi')返回當(dāng)前時(shí)間的年月日時(shí)分部分(精確到分鐘,沒有精確到秒的)
trunc(sysdate,'mm')返回當(dāng)月第一天
trunc(sysdate,'yy')返回當(dāng)年第一天
trunc(sysdate,'yyyy')返回當(dāng)年第一天
trunc(sysdate,'d')返回當(dāng)前星期的第一天(星期天)
  • 例7:dd
INSERT INTO USER_INFO(ID,NAME,CREATE_TIME,UPDATE_TIME) VALUES(5,'小紅',trunc(sysdate,'dd'),trunc(sysdate,'dd'));

--精確到天,則時(shí)間秒值都為0

  • 例7_1:
INSERT INTO USER_INFO(ID,NAME,CREATE_TIME,UPDATE_TIME) VALUES(6,'小明',trunc(sysdate,'hh'),trunc(sysdate,'hh'));

--精確到小時(shí),則分秒值為0

  • 例7_2:sysdate還可以進(jìn)行時(shí)間的加減
--在截取時(shí)間后,進(jìn)行時(shí)間的加減
INSERT INTO USER_INFO(ID,NAME,CREATE_TIME,UPDATE_TIME) VALUES(7,'小張',(trunc(sysdate,'hh')+2/24),(trunc(sysdate,'hh')+30/24/60));

處理數(shù)值

1、TRUNC(n1, n2): 用來根據(jù)n2截取n1并返回結(jié)果,n2可省略。截取數(shù)值是不進(jìn)行四舍五入

2、n2參數(shù)可以為正數(shù)也可以為負(fù)數(shù)

  • ⑴負(fù)數(shù)表示從小數(shù)點(diǎn)左邊第一位截取后面全置為零
  • ⑵正數(shù)表示小數(shù)點(diǎn)后面保留一位
  • ⑶截取整數(shù)部分:可以不傳n2參數(shù)也可以傳N2=0
  • 例8:

  • 例8_1:

拓展

timestamp關(guān)鍵字

Oracle中還可以使用timestamp關(guān)鍵字來將將一個(gè)時(shí)間字符串值轉(zhuǎn)為date類型

  • 例9:
insert into USER_INFO (ID,NAME,COUNTRY,DATE_TIME,TIMESTAMP) values(4,'李六','China',timestamp '2020-07-30 20:30:30',timestamp '2020-07-30 20:30:30.55555')

查詢數(shù)據(jù)庫(kù)系統(tǒng)時(shí)間

SELECT SYSDATE FROM DUAL

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual???????

--oracle中不能省略from關(guān)鍵字,dual???????這個(gè)表是oracle自帶的表,因此可以直接使用

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Oracle索引質(zhì)量介紹和分析腳本分享

    Oracle索引質(zhì)量介紹和分析腳本分享

    這篇文章主要介紹了Oracle索引質(zhì)量介紹和分析腳本分享,索引質(zhì)量的高低對(duì)數(shù)據(jù)庫(kù)整體性能有著直接的影響,本文給出了演示以及索引創(chuàng)建的基本指導(dǎo)原則,最后給出了索引質(zhì)量分析腳本,需要的朋友可以參考下
    2014-09-09
  • DBF 文件恢復(fù) ORACLE 數(shù)據(jù)庫(kù)的方法

    DBF 文件恢復(fù) ORACLE 數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了DBF 文件 ORACLE 數(shù)據(jù)庫(kù)恢復(fù)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 解決navicat 鏈接oracle時(shí)出現(xiàn)的各種問題

    解決navicat 鏈接oracle時(shí)出現(xiàn)的各種問題

    這篇文章主要介紹了解決navicat 鏈接oracle時(shí)出現(xiàn)的各種問題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • Oracle的RBO和CBO詳細(xì)介紹和優(yōu)化模式設(shè)置方法

    Oracle的RBO和CBO詳細(xì)介紹和優(yōu)化模式設(shè)置方法

    這篇文章主要介紹了Oracle的RBO和CBO詳細(xì)介紹和優(yōu)化模式設(shè)置方法,RBO即基于規(guī)則的優(yōu)化方式(Rule-Based Optimization),CBO即基于代價(jià)的優(yōu)化方式(Cost-Based Optimization),需要的朋友可以參考下
    2014-07-07
  • Oracle實(shí)現(xiàn)透明數(shù)據(jù)加密的代碼示例

    Oracle實(shí)現(xiàn)透明數(shù)據(jù)加密的代碼示例

    透明數(shù)據(jù)加密(TDE)是一種用于保護(hù)數(shù)據(jù)庫(kù)中靜態(tài)數(shù)據(jù)的加密技術(shù),TDE通過自動(dòng)加密數(shù)據(jù)庫(kù)文件和日志文件,確保數(shù)據(jù)在磁盤上是加密的,從而防止未經(jīng)授權(quán)的訪問,以下以 Microsoft SQL Server 為例,實(shí)現(xiàn) TDE 的步驟和代碼示例,需要的朋友可以參考下
    2024-09-09
  • Oracle CBO幾種基本的查詢轉(zhuǎn)換詳解

    Oracle CBO幾種基本的查詢轉(zhuǎn)換詳解

    這篇文章主要介紹了Oracle CBO幾種基本的查詢轉(zhuǎn)換詳解,包含視圖合并、子查詢解嵌套、謂語前推、物化視圖查詢重寫等內(nèi)容,需要的朋友可以參考下
    2014-07-07
  • 解決線上Oracle連接耗時(shí)過長(zhǎng)的問題現(xiàn)象

    解決線上Oracle連接耗時(shí)過長(zhǎng)的問題現(xiàn)象

    這篇文章主要介紹了記一次線上Oracle連接耗時(shí)過長(zhǎng)的問題,本文通過問題定位分析給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Oracle parameter可能值獲取方法

    Oracle parameter可能值獲取方法

    有時(shí)不清楚一些參數(shù)的所有允許設(shè)定的值,比如Oracle中parameter,接下來介紹兩種方法獲取Oracle中parameter的可能值,需要了解的朋友可以參考下
    2012-11-11
  • oracle—SQL技巧之(二)WMSYS.WM_CONCAT函數(shù)實(shí)現(xiàn)多行記錄用逗號(hào)拼接在一起

    oracle—SQL技巧之(二)WMSYS.WM_CONCAT函數(shù)實(shí)現(xiàn)多行記錄用逗號(hào)拼接在一起

    由于業(yè)務(wù)系統(tǒng)的交易記錄有很多,常常有些主管需要看到所有的記錄情況;又不想滾動(dòng);接下來介紹使用Oracle自帶的函數(shù) WMSYS.WM_CONCAT,進(jìn)行拼接,感興趣的朋友可以了解下
    2013-01-01
  • Oracle數(shù)據(jù)表中的死鎖情況解決方法

    Oracle數(shù)據(jù)表中的死鎖情況解決方法

    這篇文章主要介紹了Oracle數(shù)據(jù)表中的死鎖情況解決方法,包括如何避免死鎖的建議,需要的朋友可以參考下
    2016-01-01

最新評(píng)論

平和县| 泸定县| 茌平县| 利津县| 芦溪县| 双柏县| 辉南县| 台江县| 泗阳县| 永仁县| 拉孜县| 定西市| 建平县| 莆田市| 兴安县| 柳州市| 灌阳县| 石城县| 衡山县| 西丰县| 灯塔市| 阿克苏市| 宁乡县| 大冶市| 砀山县| 辽中县| 阿城市| 朝阳区| 花莲县| 海淀区| 云梦县| 万荣县| 防城港市| 武夷山市| 慈溪市| 横山县| 渝北区| 股票| 重庆市| 扬州市| 托里县|