oracle 9 插入日期,oracle date日期类型 精析
一、date
1.date、sysdate格式說(shuō)明
展示
date類型,展示格式既可以為:YYYY/MM/DD,也可以為YYYY/MM/DD HH24:MI:SS;
其存儲(chǔ)格式只有一種:YYYY/MM/DD HH24:MI:SS
展示格式一:
當(dāng)你只存年月日時(shí),date實(shí)際存儲(chǔ)的是:年月日0時(shí)0分0秒,在plsql中,其展示格式為:YYYY/MM/DD,
將其轉(zhuǎn)換成YYYY/MM/DD HH24:MI:SS時(shí),返回的是YYYY/MM/DD 00:00:00。
展示格式二:
當(dāng)date實(shí)際存儲(chǔ)的是年月日時(shí)分秒時(shí),在plsql中,其展示格式為:YYYY/MM/DD HH24:MI:SS;
系統(tǒng)時(shí)間sysdate,在plsql中,其展示格式為:YYYY/MM/DD?HH24:MI:SS。
說(shuō)明:與插入時(shí)的格式無(wú)關(guān)
證實(shí)
TESTDATE表結(jié)構(gòu)
插入sql的日期格式及結(jié)果展示
補(bǔ)充:
當(dāng)插入年月日時(shí)分秒且時(shí)分秒為:00:00:00,在plsql中是不顯示時(shí)分秒的。
要想顯示出來(lái),需用to_char()
若是還是對(duì)推薦有疑問(wèn),請(qǐng)看下面的 4.2 查詢指定時(shí)間段的數(shù)據(jù)
2.日期轉(zhuǎn)字符串
TO_CHAR(date,format)
方式一:只帶一個(gè)參數(shù)
select to_char(t.schedule_date) from CONSULT_SCHEDULE t
--28-APR-17
方式二:帶2個(gè)參數(shù)
轉(zhuǎn)換格式不區(qū)分大小寫(xiě);
小時(shí)格式化:不帶24時(shí),默認(rèn)為12小時(shí)制,24小時(shí)格式轉(zhuǎn)換時(shí)需要指明;
分鐘格式化:可以使用mi或mm,建議使用MI。
說(shuō)明:
格式化成yyyy年mm月dd日
--年月日
--需要填充3個(gè)空格,不然‘日’顯示不出來(lái)
SELECT TO_CHAR(SYSDATE,'yyyy"年"MM"月"dd"日" ') 系統(tǒng)日期 FROM DUAL
注意:
年月日需加上雙引號(hào);
別名不能加單引號(hào)、雙引號(hào)。
3.字符串轉(zhuǎn)日期
方法一:
TO_DATE('dateStr', format),規(guī)則如下:
轉(zhuǎn)換格式不區(qū)分大小寫(xiě);
小時(shí)格式化:不帶24時(shí),默認(rèn)為12小時(shí)制,24小時(shí)格式轉(zhuǎn)換時(shí)需要指明;
分鐘格式化:必須使用mi,不能使用mm,否則會(huì)報(bào)錯(cuò);
dateStr的長(zhǎng)度<=format的長(zhǎng)度,都可以實(shí)現(xiàn)類型轉(zhuǎn)換:
方式一:標(biāo)準(zhǔn)格式
年月日
說(shuō)明:
年月日時(shí)分秒
方式二:字符串只到分,會(huì)自動(dòng)添加上:00秒。
方式三:字符串也是只到日
方法二:
DATE'YYYY-MM-DD',并且只能是這一種格式。
另外,TO_DATE(date),該函數(shù)也可以只傳一個(gè)參數(shù),但是這個(gè)參數(shù)必須是date類型,
表示的含義是:將任何格式的日期類均轉(zhuǎn)換成YYYY/MM/DD的格式。
4.根據(jù)日期查詢數(shù)據(jù)
說(shuō)明:這里著重介紹的是日期字段帶有時(shí)分秒的
4.1 查詢某一天的數(shù)據(jù)
測(cè)試環(huán)境:
VIRTUAL_CARD表中共有5條記錄;
字段REGTIME的字段類型為date。
情景模擬:查詢2018年7月18日的數(shù)據(jù)記錄
格式要求:日期轉(zhuǎn)變成YYYY-MM-DD HH24:MI:SS格式的字符串
方式一:查詢條件使用字符串實(shí)現(xiàn)
--查詢條件按字符串進(jìn)行
SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME
FROM VIRTUAL_CARD T
WHERE TO_CHAR(T.REGTIME, 'yyyy-mm-dd') = '2018-07-18'
方式二:查詢條件使用日期實(shí)現(xiàn)
方法一:TRUNC()
--查詢條件按日期進(jìn)行1
SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME
FROM VIRTUAL_CARD T
WHERE TRUNC(T.REGTIME) = TO_DATE('2018-07-18', 'YYYY-MM-DD')
方法二:TO_DATE()
--查詢條件按日期進(jìn)行2
SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME
FROM VIRTUAL_CARD T
WHERE TO_DATE(T.REGTIME) = TO_DATE('2018-07-18', 'YYYY-MM-DD')
方式三:利用TO_DATE()特性
SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME
FROM VIRTUAL_CARD T
WHERE T.REGTIME >= TO_DATE('2018-07-18', 'YYYY-MM-DD')
AND T.REGTIME < TO_DATE('2018-07-19', 'YYYY-MM-DD')
方法四:TO_CHAR()-->TO_DATE() 不建議使用
SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME
FROM VIRTUAL_CARD T
WHERE TO_DATE(TO_CHAR(T.REGTIME, 'YYYY-MM-DD'), 'YYYY-MM-DD') =
TO_DATE('2018-07-18', 'YYYY-MM-DD')
查詢結(jié)果展示
updateTime--2018年8月15日10點(diǎn)21分
4.2 查詢指定時(shí)間段的數(shù)據(jù)
表數(shù)據(jù)展示
場(chǎng)景:查詢從2018-08-05至2018-08-06的數(shù)據(jù)
錯(cuò)誤實(shí)現(xiàn)方式:
--錯(cuò)誤實(shí)現(xiàn):between and
SELECT REGTIME
FROM VIRTUAL_CARD
WHERE REGTIME BETWEEN TO_DATE('2018-08-05', 'yyyy-mm-dd') AND
TO_DATE('2018-08-07', 'yyyy-mm-dd')
ORDER BY REGTIME
查詢結(jié)果:[2018/08/05 00:00:00,2018/08/07 00:00:00]
方式一:
--方式一:[2018/08/05 00:00:00,2018/08/06 23:59:59]
SELECT REGTIME
FROM VIRTUAL_CARD
WHERE REGTIME >= TO_DATE('2018-08-05', 'yyyy-mm-dd') AND
REGTIME < TO_DATE('2018-08-07', 'yyyy-mm-dd')
ORDER BY REGTIME
方式二:推薦使用
--方式二:[2018/08/05 00:00:00,2018/08/07 00:00:00)
SELECT REGTIME
FROM VIRTUAL_CARD
WHERE REGTIME >= TO_DATE('2018-08-05', 'yyyy-mm-dd') AND
REGTIME < TO_DATE('2018-08-06', 'yyyy-mm-dd') + 1 --2018-08-07
ORDER BY REGTIME
方式三:
--方式三
SELECT REGTIME
FROM VIRTUAL_CARD
WHERE REGTIME >= TO_DATE('2018-08-05 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND
REGTIME <= TO_DATE('2018-08-06 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
ORDER BY REGTIME
5.date類型進(jìn)行加減運(yùn)算
二、timestamp
1.格式
--查詢系統(tǒng)時(shí)間戳
SELECT SYSTIMESTAMP FROM DUAL
三、相互轉(zhuǎn)換
1.日期轉(zhuǎn)時(shí)間戳
--系統(tǒng)時(shí)間轉(zhuǎn)時(shí)間戳
SELECT CAST(SYSDATE AS TIMESTAMP) DATE_TO_TIMESTAMP FROM DUAL
寫(xiě)在最后
哪位大佬如若發(fā)現(xiàn)文章存在紕漏之處或需要補(bǔ)充更多內(nèi)容,歡迎留言!!!
總結(jié)
以上是生活随笔為你收集整理的oracle 9 插入日期,oracle date日期类型 精析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: oracle—ebs_采购功能点操作手册
- 下一篇: 如何让图片充满excel单元格_如何在E