每天進步一點點
          每天進步一點點

          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的有用的日期函數- -
          作者: 日期: 2005-4-12 15:36:05 訪問次數:出處:
          ?顯示選項: 自動滾屏[左鍵停止]
          1.一個月第一天的
          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.當天的半夜
          SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

          6.上個月的最后一天
          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.本月的第一個星期一
          select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)

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

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

          ?

          在oracle中有很多關于日期的函數,如:
          1、add_months()用于從一個日期值增加或減少一些月份
          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()返回當前會放時區中的當前日期
          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? /
          ?
          會話已更改。
          ?
          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數據類型返回當前會放時區中的當前日期
          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? /
          ?
          會話已更改。
          ?
          SQL> select sessiontimezone,current_timestamp from dual;
          ?
          SESSIONTIMEZONE CURRENT_TIMESTAMP
          --------------- ------------------------------------
          -11:00????????? 12-11月-03 04.58.00.243000 下午 -11:
          ???????????????? 00
          ?
          SQL>?
          ?
          4、dbtimezone()返回時區
          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()返回包含了日期參數的月份的最后一天的日期
          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()返回會話中的日期和時間
          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';
          ?
          會話已更改。
          ?
          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()判斷兩個日期之間的月份數量
          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()給定一個日期值,返回由第二個參數指出的日子第一次出現在的日期值(應返回相應日子的名稱字符串)


          Oracle的日期函數
          風逝空靈 發表于 2005-6-21 9:28:46


          相信很多人都有過統計某些數據的經歷,比如,要統計財務的情況,可能要按每年,每季度,每月,甚至每個星期來分別統計。那在oracle中應該怎么來寫sql語句呢,這個時候Oracle的日期函數會給我們很多幫助。

          ?常用日期型函數


          1。Sysdate 當前日期和時間


          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后推n個月


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

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

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


          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"指定的日期之后的第一個工作日的日期。參數"day_of_week"必須為該星期中的某一天。

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

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


          6。current_date()返回當前會話時區中的當前日期


          SQL> select current_date from dual;

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


          7。current_timestamp()以timestamp with time zone數據類型返回當前會話時區中的當前日期


          SQL> select current_timestamp from dual;

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

          8。dbtimezone()返回時區


          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()返回會話中的日期和時間


          SQL> select localtimestamp from dual;

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

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

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


          現在給出一些實踐后的用法:

          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.按照每周進行統計


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

          TO
          --
          25

          5。按照每月進行統計


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

          TO
          --
          06

          6。按照每季度進行統計


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

          T
          -
          2

          7。按照每年進行統計


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

          TO_C
          ----
          2005

          到此結束。

          ?
          閱讀全文(180) | 回復(1) | 引用通告(0) | 編輯
          ?
          ?
          回復:Oracle的日期函數
          smilepig(游客)發表評論于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 每天進步一點點 閱讀(2868) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
           
          主站蜘蛛池模板: 无锡市| 泸西县| 肇庆市| 冀州市| 岳池县| 米林县| 水富县| 静安区| 醴陵市| 浠水县| 维西| 桦甸市| 淮滨县| 潼关县| 嘉黎县| 仁怀市| 景洪市| 昭通市| 渑池县| 含山县| 巴中市| 吉水县| 云和县| 霍城县| 综艺| 文昌市| 宁远县| 高碑店市| 兴义市| 临漳县| 武冈市| 农安县| 寻甸| 信宜市| 旬阳县| 阜康市| 涿鹿县| 光泽县| 莱州市| 景德镇市| 广水市|