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;