oracle dateadd函数

oracle dateadd函数,第1张

dateadd函数不是SQL才有么???楼主是不是弄错了?

在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 045913668000 下午 -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 115628160000 上午 +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 045800243000 下午 -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 120915433000

下午

SQL> select localtimestamp,current_timestamp from dual;

LOCALTIMESTAMP CURRENT_TIMESTAMP

---------------------------- ------------------------------------

13-11月-03 120931006000 13-11月-03 120931006000 下午 +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 051131259000 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')

----------------------------------------

389855143

SQL> select months_between(sysdate,date'2001-01-01') from dual;

MONTHS_BETWEEN(SYSDATE,DATE'2001-01-01')

----------------------------------------

344035409

SQL>

9、next_day()给定一个日期值,返回由第二个参数指出的日子第一次出现在的日期值(应返回相应日子的名称字符串

1ASCII()

c1是一字符串,返回c1第一个字母的ASCII码,他的逆函数是CHR()

SELECT ASCII('A') BIG_A,ASCII('z') BIG_z FROM empBIG_A BIG_z65 122

2CHR(<i>)[NCHAR_CS]

 i是一个数字,函数返回十进制表示的字符

select CHR(65),CHR(122),CHR(223) FROM empCHR65 CHR122 CHR223A z B

3CONCAT(,)

 c1,c2均为字符串,函数将c2连接到c1的后面,如果c1为null,将返回c2如果c2为null,则返回c1,如果c1、c2都为null,

则返回null。他和 *** 作符||返回的结果相同

select concat('slobo ','Svoboda') username from dualusernameslobo Syoboda

4INITCAP()

 c1为一字符串。函数将每个单词的第一个字母大写其它字母小写返回。单词由空格,控制字符,标点符号限制。

select INITCAP('veni,vedi,vici') Ceasar from dualCeasarVeni,Vedi,Vici

5INSTR(,[,<i>[,]])

 c1,c2均为字符串,i,j为整数。函数返回c2在c1中第j次出现的位置,搜索从c1的第i个字符开始。当没有发现需要的

字符时返回0,如果i为负数,那么搜索将从右到左进行,但是位置的计算还是从左到右,i和j的缺省值为1

select INSTR('Mississippi','i',3,3) from dualINSTR('MISSISSIPPI','I',3,3)11select INSTR('Mississippi','i',-2,3)

from dualINSTR('MISSISSIPPI','I',3,3)2

诶亚

看来我的贴几章书才行

1请总结为日期字段赋值的几种方式,并举例说明

oracle中有个到当前系统时间--sysdate,如:

select sysdate from dual

可对日期进行自述运算:

select (sysdate-mybirthday)/7 from person

months_between('01-sep-95','11-jan-94')---取得二个日期之间的间隔月数(196774194)

add_months('11-jan-94',6)---给指定日期加上指定的月份后得到一个新的日期(11-jul-94)

next_day('01-sep-85','friday')---取得当前日期中下个周五的日期(01-jul-95)

last_day('01-feb-95')---取得当前日期中月份的最后一天(28-feb-95)

round进行四舍五入,trunc则否,以下是我的 *** 作结果:

sysdate为:

SYSDATE

----------

28-7月 -06

select

round(sysdate,'month') RM,

round(sysdate,'year') RY,

trunc(sysdate,'month') TM,

trunc(sysdate,'year') TY

from dual;

RM RY TM TY

---------- ---------- ---------- ----------

01-8月 -06 01-1月 -07 01-7月 -06 01-1月 -06

2请总结select语句的几种用法,并举例说明

inner join

left join

right join

cross join (一般不允许用)

3请总结SQL *** 作符,每种 *** 作符各举一例说明

||字符串相加

>

<

=

Like

Between and

4请总结SQL单行函数,每个函数各举一例说明

越全面越好,

>字符处理

upper(str)---将字符串str全部转换成大写

lower(str)---将字符串str全部转换成小写

initcap(str)---将字符串中每个单词的首字母大写

concat(str1,str2)---将字符串str1与str2连接起来(也可以通过'||'号直接相连)

substr(str,a,b)---取字符串str中的指定字符,从位置a开始取长度为b的字符串,假如a为正则从左边开始,否则从右边开始

instr(str,'z')---取得str字符串中从左边开始每一次出现z字符的下标位置(下标从1开始)

lpad(str,12,'')---左填充,即将字符串str长度填充到12,假如其不足12位则在左边以号填充

rpad(str,12,'')---右填充,同上

length(str)---计算字符串str的长度

2>数字函数

round(45926,2)---将前一数保留指定的小数位,并四舍五入(4593),假如指定位是负数则意为在小数点左边保留指定位,如round(45923,-1)=50,rount(45923,0)=46,round(4593,-2)=0,round(5593,-2)=100

trunc(45926,2)---同上,得不四舍五入(4592)

mod(1600,300)---求余(100)

以上就是关于oracle dateadd函数全部的内容,包括:oracle dateadd函数、Oracle有哪些常用函数、ORACLE SQL 查询及函数的 *** 作问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9643579.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存