oracle 几点用法

1.trunc(for dates)

为指定元素而截去的日期值

--返回当年第一天
select trunc(sysdate,'yyyy') from dual;
or
select trunc(sysdate,'yy') from dual;
--返回当月第一天 select trunc(sysdate,'mm') from dual; --返回当前星期第一天 select trunc(sysdate,'d') from dual;

--返回当前年月日
select trunc(sysdate,'dd') from dual;
or
select sysdate from dual;

--返回当前时间,精确到小时
select trunc(sysdate,'hh') from dual;

--返回当前时间,精确到分钟
select trunc(sysdate,'mi') from dual;

 

2.trunc(for number)

该函数不对指定小数前或后的部分做相应舍入选择处理,而是统统截去

trunc(101.988,2)    =   101.98

trunc(101.988)  =  101

trunc(101.988,-1)  = 100

trunc(101.988,-4)  = 0

注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均为0.

 

3.round(for number)

其实就是一个四舍五入的作用

select round(100.888,0) from dual;  --101

select round(100.888,1) from dual;  --100.9

select round(-100.888,2) from dual;  --  -100.89

 

4.to_char

select to_char(sysdate,'yyyy') from dual;
模板描述
HH 一天的小时数 (01-12)
HH12 一天的小时数 (01-12)
HH24 一天的小时数 (00-23)
MI 分钟 (00-59)
SS 秒 (00-59)
SSSSS 午夜后的秒 (0-86399)
AM or A.M. or PM or P.M. 正午标识(大写)
am or a.m. or pm or p.m. 正午标识(小写)
Y,YYY 带逗号的年(4 和更多位)
YYYY 年(4和更多位)
YYY 年的后三位
YY 年的后两位
Y 年的最后一位
BC or B.C. or AD or A.D. 年标识(大写)
bc or b.c. or ad or a.d. 年标识(小写)
MONTH 全长大写月份名(9字符)
Month 全长混合大小写月份名(9字符)
month 全长小写月份名(9字符)
MON 大写缩写月份名(3字符)
Mon 缩写混合大小写月份名(3字符)
mon 小写缩写月份名(3字符)
MM 月份 (01-12)
DAY 全长大写日期名(9字符)
Day 全长混合大小写日期名(9字符)
day 全长小写日期名(9字符)
DY 缩写大写日期名(3字符)
Dy 缩写混合大小写日期名(3字符)
dy 缩写小写日期名(3字符)
DDD 一年里的日子(001-366)
DD 一个月里的日子(01-31)
D 一周里的日子(1-7;SUN=1)
W 一个月里的周数
WW 一年里的周数
CC 世纪(2 位)
J Julian 日期(自公元前4712年1月1日来的日期)
Q 季度
RM 罗马数字的月份(I-XII;I=JAN)-大写
rm 罗马数字的月份(I-XII;I=JAN)-小写

 

to_char 把日期或数字转换为字符串

to_date 把字符串转换为数据库中的日期类转换为函数

to_number 把字符转换为数字

select to_date('2013-06-27 14:23:56','yyyy-mm-dd hh24:mi:ss') from dual;

 

5.sys_context

获取相关信息

select
SYS_CONTEXT(‘USERENV’,TERMINAL’) terminal,
SYS_CONTEXT(‘USERENV’,LANGUAGE’) language,
SYS_CONTEXT(‘USERENV’,SESSIONID’) sessionid,
SYS_CONTEXT(‘USERENV’,INSTANCE’) instance,
SYS_CONTEXT(‘USERENV’,ENTRYID’) entryid,
SYS_CONTEXT(‘USERENV’,ISDBA’) isdba,
SYS_CONTEXT(‘USERENV’,NLS_TERRITORY’) nls_territory,
SYS_CONTEXT(‘USERENV’,NLS_CURRENCY’) nls_currency,
SYS_CONTEXT(‘USERENV’,NLS_CALENDAR’) nls_calendar,
SYS_CONTEXT(‘USERENV’,NLS_DATE_FORMAT’) nls_date_format,
SYS_CONTEXT(‘USERENV’,NLS_DATE_LANGUAGE’) nls_date_language,
SYS_CONTEXT(‘USERENV’,NLS_SORT’) nls_sort,
SYS_CONTEXT(‘USERENV’,CURRENT_USER’) current_user,
SYS_CONTEXT(‘USERENV’,CURRENT_USERID’) current_userid,
SYS_CONTEXT(‘USERENV’,SESSION_USER’) session_user,
SYS_CONTEXT(‘USERENV’,SESSION_USERID’) session_userid,
SYS_CONTEXT(‘USERENV’,PROXY_USER’) proxy_user,
SYS_CONTEXT(‘USERENV’,PROXY_USERID’) proxy_userid,
SYS_CONTEXT(‘USERENV’,DB_DOMAIN’) db_domain,
SYS_CONTEXT(‘USERENV’,DB_NAME’) db_name,
SYS_CONTEXT(‘USERENV’,HOST’) host,
SYS_CONTEXT(‘USERENV’,OS_USER’) os_user,
SYS_CONTEXT(‘USERENV’,EXTERNAL_NAME’) external_name,
SYS_CONTEXT(‘USERENV’,IP_ADDRESS’) ip_address,
SYS_CONTEXT(‘USERENV’,NETWORK_PROTOCOL’) network_protocol,
SYS_CONTEXT(‘USERENV’,BG_JOB_ID’) bg_job_id,
SYS_CONTEXT(‘USERENV’,FG_JOB_ID’) fg_job_id,
SYS_CONTEXT(‘USERENV’,AUTHENTICATION_TYPE’) authentication_type,
SYS_CONTEXT(‘USERENV’,AUTHENTICATION_DATA’) authentication_data
from dual

 

6.插入单引号

--用char(39)代表字符
--用两个单引号代表一个
insert into t value('i || char(39) || m');
or
insert into t value('i''m');

 

7.获取今年的天数

--获取12月份的时间
select add_month(trunc(sysdate,'yyyy'),12) from dual;

--获取今年的天数
select add_month(trunc(sysdate,'yyyy'),12) - trunc(sysdate,'yyyy') from dual;

8.获取今天星期几

--当前日期
select to_char(sysdate,'d') from dual;

--其他日期
select to_char(to_date('2010-11-12','yyyy-mm-dd'),'d') from dual;

9.下个星期一的日期

select next_day(sysdate,'monday') from dual;

 

posted @ 2013-06-27 14:24  提莫  阅读(262)  评论(0编辑  收藏  举报