每天進(jìn)步一點(diǎn)點(diǎn)
          每天進(jìn)步一點(diǎn)點(diǎn)

          select current_timestamp from dual
          select sysdate from dual
          select to_date('2005-08-19 12:59:59','yyyy-mm-dd hh24:mi:ss') datevalue from
          dual;
          select to_char(sysdate,'yyyymmdd') from dual;

          sqlserver的有用的日期函數(shù)- -
          作者: 日期: 2005-4-12 15:36:05 訪問次數(shù):出處:
          ?顯示選項(xiàng): 自動(dòng)滾屏[左鍵停止]
          1.一個(gè)月第一天的
          SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

          2.本周的星期一
          SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

          3.一年的第一天
          SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

          4.季度的第一天
          SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

          5.當(dāng)天的半夜
          SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

          6.上個(gè)月的最后一天
          SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

          7.去年的最后一天
          SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))

          8.本月的最后一天
          SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

          9.本年的最后一天
          SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

          10.本月的第一個(gè)星期一
          select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)

          1.用一條語句得出某日期所在月份的最大天數(shù)?

          SELECT DAY(DATEADD(dd, -DAY('2004-02-13'), DATEADD(mm, 1, '2004-02-13'))) AS 'Day Number'

          ?

          在oracle中有很多關(guān)于日期的函數(shù),如:
          1、add_months()用于從一個(gè)日期值增加或減少一些月份
          date_value:=add_months(date_value,number_of_months)
          例:
          SQL> select add_months(sysdate,12) "Next Year" from dual;
          ?
          Next Year
          ----------
          13-11月-04
          ?
          SQL> select add_months(sysdate,112) "Last Year" from dual;
          ?
          Last Year
          ----------
          13-3月 -13
          ?
          SQL>?
          ?
          2、current_date()返回當(dāng)前會(huì)放時(shí)區(qū)中的當(dāng)前日期
          date_value:=current_date
          SQL> column sessiontimezone for a15
          SQL> select sessiontimezone,current_date from dual;
          ?
          SESSIONTIMEZONE CURRENT_DA
          --------------- ----------
          +08:00????????? 13-11月-03
          ?
          SQL> alter session set time_zone='-11:00'
          ?? 2? /
          ?
          會(huì)話已更改。
          ?
          SQL> select sessiontimezone,current_timestamp from dual;
          ?
          SESSIONTIMEZONE CURRENT_TIMESTAMP
          --------------- ------------------------------------
          -11:00????????? 12-11月-03 04.59.13.668000 下午 -11:
          ???????????????? 00
          ?
          SQL>?
          ?
          3、current_timestamp()以timestamp with time zone數(shù)據(jù)類型返回當(dāng)前會(huì)放時(shí)區(qū)中的當(dāng)前日期
          timestamp_with_time_zone_value:=current_timestamp([timestamp_precision])
          SQL> column sessiontimezone for a15
          SQL> column current_timestamp format a36
          SQL> select sessiontimezone,current_timestamp from dual;
          ?
          SESSIONTIMEZONE CURRENT_TIMESTAMP
          --------------- ------------------------------------
          +08:00????????? 13-11月-03 11.56.28.160000 上午 +08:
          ???????????????? 00
          ?
          SQL> alter session set time_zone='-11:00'
          ?? 2? /
          ?
          會(huì)話已更改。
          ?
          SQL> select sessiontimezone,current_timestamp from dual;
          ?
          SESSIONTIMEZONE CURRENT_TIMESTAMP
          --------------- ------------------------------------
          -11:00????????? 12-11月-03 04.58.00.243000 下午 -11:
          ???????????????? 00
          ?
          SQL>?
          ?
          4、dbtimezone()返回時(shí)區(qū)
          varchar_value:=dbtimezone
          SQL> select dbtimezone from dual;
          ?
          DBTIME
          ------
          -07:00
          ?
          SQL>?
          ?
          5、extract()找出日期或間隔值的字段值
          date_value:=extract(date_field from [datetime_value|interval_value])
          SQL> select extract(month from sysdate) "This Month" from dual;
          ?
          This Month
          ----------
          ???????? 11
          ?
          SQL> select extract(year from add_months(sysdate,36)) "3 Years Out" from dual;
          ?
          3 Years Out
          -----------
          ??????? 2006
          ?
          SQL>?
          ?
          6、last_day()返回包含了日期參數(shù)的月份的最后一天的日期
          date_value:=last_day(date_value)
          SQL> select last_day(date'2000-02-01') "Leap Yr?" from dual;
          ?
          Leap Yr?
          ----------
          29-2月 -00
          ?
          SQL> select last_day(sysdate) "Last day of this month" from dual;
          ?
          Last day o
          ----------
          30-11月-03
          ?
          SQL>?
          ?
          7、localtimestamp()返回會(huì)話中的日期和時(shí)間
          timestamp_value:=localtimestamp
          SQL> column localtimestamp format a28
          SQL> select localtimestamp from dual;
          ?
          LOCALTIMESTAMP
          ----------------------------
          13-11月-03 12.09.15.433000
          下午
          ?
          SQL> select localtimestamp,current_timestamp from dual;
          ?
          LOCALTIMESTAMP?????????????? CURRENT_TIMESTAMP
          ---------------------------- ------------------------------------
          13-11月-03 12.09.31.006000?? 13-11月-03 12.09.31.006000 下午 +08:
          下午???????????????????????? 00
          ?
          SQL> alter session set time_zone='-11:00';
          ?
          會(huì)話已更改。
          ?
          SQL> select localtimestamp,to_char(sysdate,'DD-MM-YYYY HH:MI:SS AM') "SYSDATE" from dual;
          ?
          LOCALTIMESTAMP?????????????? SYSDATE
          ---------------------------- ------------------------
          12-11月-03 05.11.31.259000?? 13-11-2003 12:11:31 下午
          下午
          ?
          SQL>?
          ?
          8、months_between()判斷兩個(gè)日期之間的月份數(shù)量
          number_value:=months_between(date_value,date_value)
          SQL> select months_between(sysdate,date'1971-05-18') from dual;
          ?
          MONTHS_BETWEEN(SYSDATE,DATE'1971-05-18')
          ----------------------------------------
          ?????????????????????????????? 389.855143
          ?
          SQL> select months_between(sysdate,date'2001-01-01') from dual;
          ?
          MONTHS_BETWEEN(SYSDATE,DATE'2001-01-01')
          ----------------------------------------
          ?????????????????????????????? 34.4035409
          ?
          SQL>?
          ?
          9、next_day()給定一個(gè)日期值,返回由第二個(gè)參數(shù)指出的日子第一次出現(xiàn)在的日期值(應(yīng)返回相應(yīng)日子的名稱字符串)


          Oracle的日期函數(shù)
          風(fēng)逝空靈 發(fā)表于 2005-6-21 9:28:46


          相信很多人都有過統(tǒng)計(jì)某些數(shù)據(jù)的經(jīng)歷,比如,要統(tǒng)計(jì)財(cái)務(wù)的情況,可能要按每年,每季度,每月,甚至每個(gè)星期來分別統(tǒng)計(jì)。那在oracle中應(yīng)該怎么來寫sql語句呢,這個(gè)時(shí)候Oracle的日期函數(shù)會(huì)給我們很多幫助。

          ?常用日期型函數(shù)


          1。Sysdate 當(dāng)前日期和時(shí)間


          SQL> Select sysdate from dual;

          SYSDATE
          ----------
          21-6月 -05


          2。Last_day 本月最后一天


          SQL> Select last_day(sysdate) from dual;

          LAST_DAY(S
          ----------
          30-6月 -05


          3。Add_months(d,n) 當(dāng)前日期d后推n個(gè)月


          SQL> Select add_months(sysdate,2) from dual;

          ADD_MONTHS
          ----------
          21-8月 -05

          4。Months_between(f,s) 日期f和s間相差月數(shù)


          SQL> select months_between(sysdate,to_date('2005-11-12','yyyy-mm-dd'))from dual;


          MONTHS_BETWEEN(SYSDATE,TO_DATE('2005-11-12','YYYY-MM-DD'))
          ----------------------------------------------------------
          ??????????????????????????????????????????????? -4.6966741


          5。NEXT_DAY(d, day_of_week)
          返回由"day_of_week"命名的,在變量"d"指定的日期之后的第一個(gè)工作日的日期。參數(shù)"day_of_week"必須為該星期中的某一天。

          SQL> SELECT next_day(to_date('20050620','YYYYMMDD'),1) FROM dual;

          NEXT_DAY(T
          ----------
          26-6月 -05


          6。current_date()返回當(dāng)前會(huì)話時(shí)區(qū)中的當(dāng)前日期


          SQL> select current_date from dual;

          CURRENT_DA
          ----------
          21-6月 -05


          7。current_timestamp()以timestamp with time zone數(shù)據(jù)類型返回當(dāng)前會(huì)話時(shí)區(qū)中的當(dāng)前日期


          SQL> select current_timestamp from dual;

          CURRENT_TIMESTAMP
          ---------------------------------------------------------------------------
          21-6月 -05 10.13.08.220589 上午 +08:00

          8。dbtimezone()返回時(shí)區(qū)


          SQL> select dbtimezone from dual;

          DBTIME
          ------
          -08:00

          9。extract()找出日期或間隔值的字段值

          SQL> select extract(month from sysdate) "This Month" from dual;

          This Month
          ----------
          ???????? 6


          SQL> select extract(year from add_months(sysdate,36)) " Years" from dual;

          ???? Years
          ----------
          ????? 2008

          10。localtimestamp()返回會(huì)話中的日期和時(shí)間


          SQL> select localtimestamp from dual;

          LOCALTIMESTAMP
          ---------------------------------------------------------------------------
          21-6月 -05 10.18.15.855652 上午

          常用日期數(shù)據(jù)格式(該段為摘抄)

          Y或YY或YYY 年的最后一位,兩位或三位 Select to_char(sysdate,’YYY’) from dual; 002表示2002年
          SYEAR或YEAR SYEAR使公元前的年份前加一負(fù)號(hào) Select to_char(sysdate,’SYEAR’) from dual; -1112表示公元前111 2年
          Q 季度,1~3月為第一季度 Select to_char(sysdate,’Q’) from dual; 2表示第二季度①
          MM 月份數(shù) Select to_char(sysdate,’MM’) from dual; 12表示12月
          RM 月份的羅馬表示 Select to_char(sysdate,’RM’) from dual; IV表示4月
          Month 用9個(gè)字符長度表示的月份名 Select to_char(sysdate,’Month’) from dual; May后跟6個(gè)空格表示5月
          WW 當(dāng)年第幾周 Select to_char(sysdate,’WW’) from dual; 24表示2002年6月13日為第24周
          W 本月第幾周 Select to_char(sysdate,’W’) from dual; 2002年10月1日為第1周
          DDD 當(dāng)年第幾, 1月1日為001,2月1日為032 Select to_char(sysdate,’DDD’) from dual; 363 2002年1 2月2 9日為第363天
          DD 當(dāng)月第幾天 Select to_char(sysdate,’DD’) from dual; 04 10月4日為第4天
          D 周內(nèi)第幾天 Select to_char(sysdate,’D’) from dual; 5 2002年3月14日為星期一
          DY 周內(nèi)第幾天縮寫 Select to_char(sysdate,’DY’) from dual; SUN 2002年3月24日為星期天
          HH或HH12 12進(jìn)制小時(shí)數(shù) Select to_char(sysdate,’HH’) from dual; 02 午夜2點(diǎn)過8分為02
          HH24 24小時(shí)制 Select to_char(sysdate,’HH24’) from dual; 14 下午2點(diǎn)08分為14
          MI 分鐘數(shù)(0~59) Select to_char(sysdate,’MI’) from dual; 17下午4點(diǎn)17分
          SS 秒數(shù)(0~59) Select to_char(sysdate,’SS’) from dual; 22 11點(diǎn)3分22秒
          提示注意不要將MM格式用于分鐘(分鐘應(yīng)該使用MI)。MM是用于月份的格式,將它用于分鐘也能工作,但結(jié)果是錯(cuò)誤的。


          現(xiàn)在給出一些實(shí)踐后的用法:

          1。上月末天:


          SQL> select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from
          dual;

          LASTDAY
          ----------
          2005-05-31

          2。上月今天


          SQL> select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;


          PRETODAY
          ----------
          2005-05-21

          3.上月首天

          SQL> select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') firstDay from dual;

          FIRSTDAY
          ----------
          2005-05-01

          4.按照每周進(jìn)行統(tǒng)計(jì)


          SQL> select to_char(sysdate,'ww') from dual group by to_char(sysdate,'ww');

          TO
          --
          25

          5。按照每月進(jìn)行統(tǒng)計(jì)


          SQL> select to_char(sysdate,'mm') from dual group by to_char(sysdate,'mm');

          TO
          --
          06

          6。按照每季度進(jìn)行統(tǒng)計(jì)


          SQL> select to_char(sysdate,'q') from dual group by to_char(sysdate,'q');

          T
          -
          2

          7。按照每年進(jìn)行統(tǒng)計(jì)


          SQL> select to_char(sysdate,'yyyy') from dual group by to_char(sysdate,'yyyy');

          TO_C
          ----
          2005

          到此結(jié)束。

          ?
          閱讀全文(180) | 回復(fù)(1) | 引用通告(0) | 編輯
          ?
          ?
          回復(fù):Oracle的日期函數(shù)
          smilepig(游客)發(fā)表評(píng)論于2005-7-25 13:36:49

          ?

          SQL> select to_char(sysdate,'DAY','NLS_DATE_LANGUAGE=''SIMPLIFIED CHINESE''') fr
          om dual;

          TO_CHA
          ------
          星期一
          ?

          posted on 2006-08-02 22:51 每天進(jìn)步一點(diǎn)點(diǎn) 閱讀(2868) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
           
          主站蜘蛛池模板: 六盘水市| 腾冲县| 平昌县| 肇东市| 东海县| 丘北县| 长治市| 贵港市| 忻州市| 静海县| 七台河市| 彭泽县| 米易县| 织金县| 浦北县| 武夷山市| 富锦市| 拜城县| 平塘县| 上犹县| 日照市| 沁源县| 平利县| 宁陵县| 潞城市| 永平县| 南昌市| 奉节县| 黑龙江省| 陇西县| 祁门县| 简阳市| 金秀| 鞍山市| 南丰县| 溆浦县| 巩留县| 元氏县| 多伦县| 奈曼旗| 灵寿县|