spl>
select * from emp
???????? where dates
???????? between
???????? to_date('2007-06-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss')
???????? and
???????? to_date('2007-06-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss')
??????? 當省略HH、MI和SS對應的輸入參數時,Oracle使用0作為DEFAULT值。如果輸入的日期數據忽略時間部分,Oracle會將時、分、秒部分都置為0,也就是說會取整到日。
??????? 同樣,忽略了DD參數,Oracle會采用1作為日的默認值,也就是說會取整到月。
??????? 但是,不要被這種“慣性”所迷惑,如果忽略MM參數,Oracle并不會取整到年,取整到當前月。
?????? 注意:
?????? 1.在使用Oracle的to_date函數來做日期轉換時,可能會直覺地采用“yyyy-MM-dd HH:mm:ss”的格式作為格式進行轉換,但是在Oracle中會引起錯誤:“ORA 01810 格式代碼出現兩次”。如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;
原因是SQL中不區分大小寫,MM和mm被認為是相同的格式代碼,所以Oracle的SQL采用了mi代替分鐘。select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
?????? 2.另要以24小時的形式顯示出來要用HH24
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分鐘
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm會顯示月份
Oracle中幾個關于日期方面的SQL實例
SQL> ? select ? to_char(sysdate,'YYYYMMDD ? W ? HH24:MI:SS') ? from ? dual; ?
? ?
? TO_CHAR(SYSDATE,'YY ?
? ------------------- ?
? 20030327 ? 4 ? 18:16:09 ?
? ?
? SQL> ? select ? to_char(sysdate,'W') ? from ? dual; ?
? ?
? T ?
? - ?
? 4?
№2:取得當前日期是一個星期中的第幾天,注意星期日是第一天
? SQL> ? select ? sysdate,to_char(sysdate,'D') ? from ? dual; ?
? ?
? SYSDATE ? ? ? T ?
? --------- ? - ?
? 27-MAR-03 ? 5??
類似:
select ? to_char(sysdate,'yyyy') ? from ? dual; ? --年 ?
? select ? to_char(sysdate,'Q' ? from ? dual; ? ? ? ? ? --季 ?
? select ? to_char(sysdate,'mm') ? from ? dual; ? ? ? --月 ?
? select ? to_char(sysdate,'dd') ? from ? dual; ? ? ? --日 ?
? ddd ? 年中的第幾天 ?
? WW ? 年中的第幾個星期 ?
? W ? 該月中第幾個星期 ?
? D ? 周中的星期幾 ?
? hh ? 小時(12) ?
? hh24 ? 小時(24) ?
? Mi ? 分 ?
? ss ? 秒
№3:取當前日期是星期幾中文
SQL> ? select ? to_char(sysdate,'day') ? from ? dual; ?
? ?
? TO_CHAR(SYSDATE,'DAY') ?
? ---------------------- ?
? 星期四??
№4:如果一個表在一個date類型的字段上面建立了索引,如何使用
alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
№5: 得到當前的日期
select sysdate from dual;
№6: 得到當天凌晨0點0分0秒的日期
select trunc(sysdate) from dual;
-- 得到這天的最后一秒
select trunc(sysdate) + 0.99999 from dual;
-- 得到小時的具體數值
select trunc(sysdate) + 1/24 from dual;
select trunc(sysdate) + 7/24 from dual;
№7:得到明天凌晨0點0分0秒的日期
select trunc(sysdate+1) from dual;
select trunc(sysdate)+1 from dual;
№8: 本月一日的日期
select trunc(sysdate,'mm') from dual;
№9:得到下月一日的日期
select trunc(add_months(sysdate,1),'mm') from dual;
№10:返回當前月的最后一天?
select last_day(sysdate)? from dual;???????
select last_day(trunc(sysdate))? from dual;?
select trunc(last_day(sysdate))? from dual;
select trunc(add_months(sysdate,1),'mm') - 1 from dual;
№11: 得到一年的每一天
select trunc(sysdate,'yyyy')+ rn -1 date0
from
(select rownum rn from all_objects
where rownum<366);
№12:今天是今年的第N天
SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
№13:如何在給現有的日期加上2年
select add_months(sysdate,24) from dual;
№14:判斷某一日子所在年分是否為潤年
select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','閏年','平年') from dual;
№15:判斷兩年后是否為潤年
select decode(to_char(last_day(trunc(add_months(sysdate,24),'y')+31),'dd'),'29','閏年','平年') from dual;
№16:得到日期的季度
select ceil(to_number(to_char(sysdate,'mm'))/3) from dual;
select to_char(sysdate, 'Q') from dual;
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
