oracle 日期的使用,Oracle日期类型的使用

ORACLE 日期格式,以时间 2008-11-21 13:45:25 为例:  +++ 年的格式:  yy 两位年 显示:08  yyy 三位年 显示:008  yyyy 四位年 显示:2008  +++ 月的格式:  mm 数字表示 显示:11  mon 字符集简写表示 显示:11月,若是英文版,则显示nov  month 字符集全写表示 显示:11月,若是英文版,则显示november  +++ 日的格式:  dd 当月第几天 显示:21  ddd 当年第几天 显示:21  dy 当周第几天简写 显示:星期五,若是英文版,则显示fri  day 当周第几天全写 显示:星期五,若是英文版,则显示friday  ddspth 拼写 显示:twenty-first  +++ 时的格式:  hh 12小时进制 显示:01 范围:1:00:00 - 12:59:59  hh24 24小时进制 显示:13 范围:0:00:00 - 23:59:59  +++ 分的格式:  mi 60进制 显示:45  +++ 秒的格式:  ss 60进制 显示:25  +++ 其它:  Q 季度 显示:4  WW 当年第几周 显示:44  W 当月第几周 显示:1  +++ 例如:  select to_char(sysdate) "默认",   to_char(sysdate, 'dd-mm-yyyy') "dd-mm-yyyy",   to_char(sysdate, 'yyyy-mm-dd') "yyyy-mm-dd",   to_char(sysdate, 'yy') "yy",   to_char(sysdate, 'yyy') "yyy",   to_char(sysdate, 'yyyy') "yyyy",   to_char(sysdate, 'mm') "数字月",   to_char(sysdate, 'mon') "简写月",   to_char(sysdate, 'month') "全写月",   to_char(sysdate, 'd') "当周第几天",   to_char(sysdate, 'dd') "当月第几天",   to_char(sysdate, 'ddd') "当年第几天",   to_char(sysdate, 'dy') "当周第几天简写",   to_char(sysdate, 'day') "当周第几天全写",   to_char(sysdate, 'ddspth') "ddspth",   to_char(sysdate, 'Q') "季度",   to_char(sysdate, 'WW') "当年第几周",   to_char(sysdate, 'W') "当月第几周",   to_char(sysdate, 'hh24:mi:ss') "hh24:mi:ss",   to_char(sysdate, 'yy-mm-dd') "yy-mm-dd",   to_char(sysdate, 'yyyy-mm-dd') "yyyy-mm-dd",   to_char(sysdate, 'yy-mm-dd hh12:mi:ss') "yy-mm-dd hh12:mi:ss",   to_char(sysdate, 'yyyy-mm-dd hh12:mi:ss') "yyyy-mm-dd hh12:mi:ss",   to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') "yyyy-mm-dd hh24:mi:ss"   from dual;    +++ 1,to_char()  ++ 日期和字符串之间的转换  select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;  select to_date('2008-11-21 13:45:25','yyyy-mm-dd hh24:mi:ss') from dual;  ++ 获得某天是星期几  select to_char(to_date('2008-11-21 13:45:25','yyyy-mm-dd'),'day') from dual;  select to_char(to_date('2008-11-21 13:45:25','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;  +++ 2,round()舍入到最接近的日期  select sysdate S1,   round(sysdate) S2,   round(sysdate, 'year') YEAR,   round(sysdate, 'month') MONTH,   round(sysdate, 'day') DAY   from dual;  +++ 3,trunc()截断到最接近的日期(单位为天)  select sysdate S1,   trunc(sysdate) S2, /*返回当前日期,无时分秒 */   trunc(sysdate, 'year') YEAR, /*返回当前年的1月1日,无时分秒 */   trunc(sysdate, 'month') MONTH, /*返回当前月的1日,无时分秒 */   trunc(sysdate, 'day') DAY /*返回当前星期的星期天,无时分秒 */   from dual;  +++ 4,next_day(datetime,day)  ++ 返回下个星期的日期,day为“1~7”或“星期日~星期六”,“1”表示星期日  select next_day(to_date('2008-11-21', 'yyyy-mm-dd'), 6) from dual;  +++ 5,last_day()  ++ 最后一天  select last_day(sysdate) from dual;  ++ 查找月的第一和最后一天  select Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH') First_Day_Last_Month,   Trunc(SYSDATE, 'MONTH') - 1 / 86400 Last_Day_Last_Month,   Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,   LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month   from dual;  +++ 6,add_months()  ++ 当前日期减到两个月  select add_months(last_day(sysdate) + 1, -2) from dual;  ++ 获得今年天数  select add_months(trunc(sysdate, 'year'), 12) - trunc(sysdate, 'year') from dual;  +++ 7,new_time()时区处理  select to_char(NEW_TIME(sysdate, 'GMT', 'EST'), 'dd/mm/yyyy hh:mi:ss'),sysdate from dual;  +++ 8,greatest()返回日期列表中最晚的日期  select greatest('01-1月-04', '04-1月-04', '10-2月-04') from dual  +++ 9,拼写  select to_char( to_date(222,'J'),'Jsp') from dual;  显示:Two Hundred Twenty-Two  +++ 10,日期运算  Oracle时间相加减以天为单位,设变量为n,换算成年、月、日。  select floor(to_number(sysdate - to_date('2007-11-02 15:55:03',   'yyyy-mm-dd hh24:mi:ss')) / 365) "相差年"   from dual;  select floor(sysdate - to_date('20081121', 'yyyymmdd')) "相差天数"   from dual;  select floor(sysdate - to_date('20081121', 'yyyy-mm-dd')) "相差天数"   from dual;  select floor(sysdate - to_date('2008-11-21', 'yyyy-mm-dd')) "相差天数"   from dual;  select floor(to_number(sysdate - to_date('2008-11-21', 'yyyy-mm-dd'))) "相差天数"   from dual;  select months_between(to_date('2008-12-01', 'yyyy-mm-dd'),   to_date('2008-10-01', 'yyyy-mm-dd')) "相差月"   from dual;  select months_between(to_date('2008-2-1', 'yyyy-mm-dd'),   to_date('2007-12-31', 'yyyy-mm-dd')) "相差月"   from dual;  select floor(to_number(sysdate - to_date('2008-10-21 24:00:00',   'yyyy-mm-dd hh24:mi:ss')) * 24) "相差时"   from dual;  select floor(to_number(sysdate - to_date('2008-10-21 24:00:00',   'yyyy-mm-dd hh24:mi:ss')) * 24 * 60) "相差分"   from dual;  select floor(to_number(sysdate - to_date('2008-10-21 24:00:00',   'yyyy-mm-dd hh24:mi:ss')) * 24 * 60 * 60) "相差秒"   from dual;  select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),   to_char(sysdate + n * 365, 'yyyy-mm-dd hh24:mi:ss') "改变时间-年"   from dual;  select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),   add_months(sysdate, n) "改变时间-月"   from dual;  select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),   to_char(sysdate + n, 'yyyy-mm-dd hh24:mi:ss') "改变时间-日"   from dual;  select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),   to_char(sysdate + n / 24, 'yyyy-mm-dd hh24:mi:ss') "改变时间-时"   from dual;  select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),   to_char(sysdate + n / 24 / 60, 'yyyy-mm-dd hh24:mi:ss') "改变时间-分"   from dual;  select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),   to_char(sysdate + n / 24 / 60 / 60, 'yyyy-mm-dd hh24:mi:ss') "改变时间-秒"   from dual;    +++ 11,设置日期格式  ++ 日期格式要看你安装的ORACLE字符集的类型,如:US7ASCII,日期是'01-Jan-01'。  alter system set NLS_DATE_LANGUAGE = American  alter session set NLS_DATE_LANGUAGE = American  ++ 或者在to_date中写  select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;  ++ 可以用如下SQL语句查看参数:  select * from nls_session_parameters;  ------------------------------------------------------------------------------------  PARAMETER VALUE  NLS_LANGUAGE SIMPLIFIED CHINESE  NLS_TERRITORY CHINA  NLS_CURRENCY RMB  NLS_ISO_CURRENCY CHINA  NLS_NUMERIC_CHARACTERS .,  NLS_CALENDAR GREGORIAN  NLS_DATE_FORMAT DD-MON-RR  NLS_DATE_LANGUAGE SIMPLIFIED CHINESE  NLS_SORT BINARY  NLS_TIME_FORMAT HH.MI.SSXFF AM  NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM  NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR  NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR  NLS_DUAL_CURRENCY RMB  NLS_COMP BINARY  NLS_LENGTH_SEMANTICS BYTE  NLS_NCHAR_CONV_EXCP FALSE  ------------------------------------------------------------------------------------  select * from V$NLS_PARAMETERS;  ------------------------------------------------------------------------------------  PARAMETER VALUE  NLS_LANGUAGE SIMPLIFIED CHINESE  NLS_TERRITORY CHINA  NLS_CURRENCY RMB  NLS_ISO_CURRENCY CHINA  NLS_NUMERIC_CHARACTERS .,  NLS_CALENDAR GREGORIAN  NLS_DATE_FORMAT DD-MON-RR  NLS_DATE_LANGUAGE SIMPLIFIED CHINESE  NLS_CHARACTERSET ZHS16GBK  NLS_SORT BINARY  NLS_TIME_FORMAT HH.MI.SSXFF AM  NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM  NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR  NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR  NLS_DUAL_CURRENCY RMB  NLS_NCHAR_CHARACTERSET AL16UTF16  NLS_COMP BINARY  NLS_LENGTH_SEMANTICS BYTE  NLS_NCHAR_CONV_EXCP FALSE  ------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值