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