Oracle日期函数大全(各函数锦集)

一、 常用日期数据格式 1.Y或YY或YYY 年的最后一位,两位或三位 SQL> Select to_char(sysdate,'Y') from dual; TO_CHAR(SYSDATE,'Y') -------------------- 7 SQL> Select to_char(sysdate,'YY') from dual; TO_CHAR(SYSDATE,'YY') --------------------- 07 SQL> Select to_char(sysdate,'YYY') from dual; TO_CHAR(SYSDATE,'YYY') ---------------------- 007 2.Q 季度 1~3月为第一季度,2表示第二季度。 SQL> Select to_char(sysdate,'Q') from dual; TO_CHAR(SYSDATE,'Q') -------------------- 2 3.MM 月份数 SQL> Select to_char(sysdate,'MM') from dual; TO_CHAR(SYSDATE,'MM') --------------------- 05 4.RM 月份的罗马表示 (V在罗马数字中表示 5) SQL> Select to_char(sysdate,'RM') from dual; TO_CHAR(SYSDATE,'RM') --------------------- V 5.Month 用9个字符长度表示的月份名 SQL> Select to_char(sysdate,'Month') from dual; TO_CHAR(SYSDATE,'MONTH') ------------------------ 5月 6.WW 当年第几周(2007年5月29日为2007年第22周) SQL> Select to_char(sysdate,'WW') from dual; TO_CHAR(SYSDATE,'WW') --------------------- 22 7.W 本月第几周 (2007年5月29日为5月第5周) SQL> Select to_char(sysdate,'W') from dual; TO_CHAR(SYSDATE,'W') -------------------- 5 8.DDD 当年第几天(2007年5月29日为2007年第149天) SQL> Select to_char(sysdate,'DDD') from dual; TO_CHAR(SYSDATE,'DDD') ---------------------- 149 9. DD 当月第几天 SQL> Select to_char(sysdate,'DD') from dual; TO_CHAR(SYSDATE,'DD') --------------------- 29 10.D 周内第几天 SQL> Select to_char(sysdate,'D') from dual; TO_CHAR(SYSDATE,'D') -------------------- 3 11.DY 中文的星期几 ((2007年5月29日为星期二)) SQL> Select to_char(sysdate,'DY') from dual; TO_CHAR(SYSDATE,'DY') --------------------- 星期二 12.HH或HH12 12进制小时数(16:09分为用12小时制计时为4点) SQL> Select to_char(sysdate,'HH') from dual; TO_CHAR(SYSDATE,'HH') --------------------- 04 13.HH24 24小时制 SQL> Select to_char(sysdate,'HH24') from dual; TO_CHAR(SYSDATE,'HH24') ----------------------- 16 二、常用时间函数 1.trunc(sysdate,'Q') 本季度第一天 SQL> select trunc(sysdate,'Q') from dual; TRUNC(SYSDATE,'Q') ------------------ 2007-4-1 2.trunc(sysdate,'D') 本周的第一天(周日) SQL> select trunc(sysdate,'D')from dual; TRUNC(SYSDATE,'D') ------------------ 2007-5-27 3.last_day(sysdate) 本月最后一天 SQL> select last_day(sysdate) from dual; LAST_DAY(SYSDATE) ----------------- 2007-5-31 15:20:3 4.add_months(sysdate,2) 日期sysdate后推2个月 SQL> select add_months(sysdate,2) from dual; ADD_MONTHS(SYSDATE,2) --------------------- 2007-7-29 15:21:14 5.next_day(sysdate,2) 日期sysdate之后的第一周中,第2(指定星期的第几天)是什么日期 SQL> select next_day(sysdate,2) from dual; NEXT_DAY(SYSDATE,2) ------------------- 2007-6-4 15:22:10 6.Months_between(f,s) 日期f和s间相差月数 SQL> select months_between(sysdate,to_date('2007-04-12','yyyy-mm-dd'))from dual; MONTHS_BETWEEN(SYSDATE,TO_DATE ------------------------------ 1.56909908900836 7.得到SYSDATE+5所在的月份 SQL> SELECT to_char(SYSDATE+5,'mon','nls_date_language=american') FROM dual; TO_CHAR(SYSDATE+5,'MON','NLS_D ------------------------------ jun 8.current_date()返回当前会话时区中的当前日期。 9.select dbtimezone from dual; 10.extract()找出日期或间隔值的字段值 SQL> select extract(month from sysdate) "This Month" from dual; This Month ---------- 5 SQL> select extract(year from sysdate) "This year" from dual; This year ---------- 2007 SQL> select extract(month from add_months(sysdate,2)) " Month" from dual; Month ---------- 7 ==================================================================

三、一些实践后的用法: 1.上月末天: select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from dual; 2.上月今天 SQL> select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual; 3.上月首天 SQL> select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') firstDay from dual; 4.要找到某月中所有周五的具体日期 SELECT to_char(b.a,'YY-MM-DD') FROM ( SELECT trunc(SYSDATE,'mm')+ROWNUM-1 a FROM dba_objects where rownum < 32 ) b WHERE to_char(b.a,'day')='星期五'; 如果把where to_char(t.d, 'MM') = to_char(sysdate, 'MM')改成sysdate-90,即为查找当前月份的前三个月中 的每周五的日期。 5.得到系统当前月及以后的日期 select trunc(sysdate, 'MM')+ROWNUM-1 FROM dba_objects ; ----------------------------------- to_date 字符串类型转为换日期类型 字符串中的相应位置上的字符,必须符合时间范围的限制 14.MI 分钟数(0~59) 提示注意不要将MM格式用于分钟(分钟应该使用MI)。MM是用于月份的格式,将它用于分钟也能工作,但结果是错误的。 15.SS 秒数(0~59)

ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例)

Year: yy two digits 两位年 显示值:07 yyy three digits 三位年 显示值:007 yyyy four digits 四位年 显示值:2007

Month: mm number 两位月 显示值:11 mon abbreviated 字符集表示 显示值:11月,若是英文版,显示nov month spelled out 字符集表示 显示值:11月,若是英文版,显示november

Day: dd number 当月第几天 显示值:02 ddd number 当年第几天 显示值:02 dy abbreviated 当周第几天简写 显示值:星期五,若是英文版,显示fri day spelled out 当周第几天全写 显示值:星期五,若是英文版,显示friday ddspth spelled out, ordinal twelfth

Hour:

合集下载

oracle函数

oracle函数
Ø显示Blake的雇员编号、姓名和部门编号。
SQL> SELECT empno, ename, deptno
2 FROM
emp
3 WHERE ename = 'blake';
no rows selected
SQL> SELECT 2 FROM 3 WHERE
empno, ename, deptno emp ename = UPPER('blake');
学习改变命运,知 识创造未来
oracle函数
数值型函数
使用ceil函数: SELECT ceil(2.35) FROM dual; 执行结果: CEIL(2.35) ------------3 说明:该函数求得大于等于2.35的最小整数,结果
为3。
学习改变命运,知 识创造未来
oracle函数
数值型函数
--------------- -------------- -----------------
45.92
46
50
学习改变命运,知 识创造未来
oracle函数
使用 TRUNC函数
SQL> SELECT TRUNC(45.923,2), TRUNC(45.923),
2
TRUNC(45.923,-1)
45.92
ØMOD: 取余数 MOD(1600, 300) 100
学习改变命运,知 识创造未来
oracle函数
使用 ROUND 函数
SQL> SELECT ROUND(45.923,2), ROUND(45.923,0),
2
ROUND(45.923,-1)
3 FROM DUAL;

ORACLE中函数MONTHS_BETWEEN的使用

ORACLE中函数MONTHS_BETWEEN的使用

ORACLE中函数MONTHS_BETWEEN的使用MONTHS_BETWEEN函数是ORACLE数据库中的一个日期函数,主要用于计算两个日期之间的月份差。

语法:MONTHS_BETWEEN(date1, date2)参数说明:date1: 要计算的起始日期date2: 要计算的结束日期返回值类型:NUMBER类型,表示两个日期之间的月份差。

使用MONTHS_BETWEEN函数,可以进行如下操作:1.计算两个日期之间的月份差:可以使用MONTHS_BETWEEN函数计算两个日期之间的精确月份差。

例如,假设现在的日期是2024-01-15,要计算到期日为2024-06-30的合同还有多少个月到期,可以使用以下SQL语句:SELECTMONTHS_BETWEEN('2024-06-30','2024-01-15')ASMONTHS_DIFFFROMDUAL;2.计算日期与当前日期之间的月份差:在实际的开发中,常常需要计算日期与当前日期之间的月份差。

可以使用SYSDATE函数获取当前日期,然后将其作为参数传递给MONTHS_BETWEEN函数计算月份差。

例如,要计算一个人的生日与当前日期之间的月份差,可以使用以下SQL语句:SELECTMONTHS_BETWEEN(SYSDATE,'1990-01-01')ASMONTHS_DIFFFROMDUAL;3.负数表示起始日期在结束日期之后:如果起始日期在结束日期之后,MONTHS_BETWEEN函数的返回值为负数。

例如,计算2024-06-30与2024-01-15之间的月份差,可以使用以下SQL语句:SELECTMONTHS_BETWEEN('2024-01-15','2024-06-30')ASMONTHS_DIFFFROMDUAL;4.特殊日期的处理:由于不同月份的天数不一样,所以MONTHS_BETWEEN函数在计算相差月份时会考虑天数的影响。

oracle 数字格式的月份相减的函数

oracle 数字格式的月份相减的函数

Oracle数据库中提供了一系列强大的函数,可以帮助用户进行各种数据处理操作。

其中包括了用于处理日期和时间的函数。

在日常的数据处理中,常常需要计算两个日期之间的差值,比如计算两个日期之间相差的月份数。

Oracle数据库中提供了一个方便实用的函数来实现这一功能,即“月份相减”的函数。

本文将详细介绍这个函数的用法和示例。

1. 函数名称和语法在Oracle数据库中,用于计算两个日期之间相差的月份数的函数是MONTHS_BETWEEN函数。

它的语法如下:```sqlMONTHS_BETWEEN(date1, date2)```其中,date1和date2是需要计算的两个日期。

该函数返回一个数值,表示date1和date2相差的月份数。

2. 函数的用法在实际使用中,MONTHS_BETWEEN函数可以应用于各种场景。

可以用它来计算两个日期之间相差的月份数,或者用它来进行日期之间的比较和排序。

下面将结合实际示例来详细说明这个函数的用法。

3. 函数示例假设有一个员工表,存储了员工的入职日期和离职日期。

我们需要计算每位员工在公司工作的月份数,并按照月份数进行排序。

可以使用MONTHS_BETWEEN函数来实现这一需求。

```sqlSELECT employee_id, entry_date, departure_date,MONTHS_BETWEEN(departure_date, entry_date) ASmonths_workedFROM employeeORDER BY months_worked DESC;```在上述示例中,我们通过MONTHS_BETWEEN函数计算了每位员工的在职月份数,并将查询结果按照月份数进行降序排序,从而得到了按照工作月份数排名的员工列表。

4. 函数的注意事项在使用MONTHS_BETWEEN函数时,需要注意一些细节问题。

如果date1大于date2,则函数返回一个正数;如果date1小于date2,则函数返回一个负数;如果date1和date2相等,则函数返回0。

oracle时间格式(to_char、trunc函数的使用)

oracle时间格式(to_char、trunc函数的使用)

oracle时间格式(to_char、trunc函数的使⽤)1、oracle⾥的系统时间是sysdate,是date类型,执⾏select sysdate from dual,得到yyyy/mm/dd hh24:mi:ss形式的时间,oracle不区分⼤⼩写。

dual表是oracle实际存在的表,当sql强制某些数据必须从某表中获得,也就是说必须有from命令就可以使⽤dual。

yyyy代表年份,mm代表⽉份,dd代表天hh24代表24⼩时进制的时,如果没有24就是12⼩时进制的时,mi代表分钟(minute),不⽤mm代表分钟是因为mm已代表⽉份,ss代表秒数以2021/9/26 22:29:30时间为例,执⾏select to_char(sysdate,格式) from dual格式:显⽰值yy:21,后两位年yyy:021,后三位年yyyy:2021,四位年mm:09,如果要显⽰9可以执⾏ select EXTRACT(MONTH FROM sysdate) as MONTH_OF_YEAR from dualmon:9⽉,英⽂版显⽰sep(看英⽂版的时间可以select to_char(sysdate,格式,'NLS_DATE_LANGUAGE = American') from dual,也可以ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN' ,断开数据库连接之后,字符局还原为中⽂字符集,时间变为中⽂版)month:9⽉,英⽂版显⽰septemberd:1,⼀周中的第⼏天,星期天是第⼀天dd:26,当⽉的第⼏天ddd:269,当年的第⼏天dy:星期⽇,⼀周中的星期⼏,英⽂显⽰sunday:星期⽇,⼀周中的星期⼏,英⽂显⽰Sundayhh:10,12⼩时进制hh24:22,24⼩时进制mi:29ss:30q:3,当年的第⼏个季度w:4,当⽉的第⼏周ww:39,当年的第⼏周2、to_char()可以将⽇期转换成相应格式的时间格式,类型是char如select to_char(sysdate,'yyyymmdd') from dual,得到'20210925'select to_char(sysdate,'yyyy-mm-dd') from dual,得到'2021-09-25'3、trunc函数⽤法trunc()函数⽤于截取时间或数值,返回指定的值以2021/9/27 22:34:30时间为例,执⾏select trunc(sysdate,格式) from dual格式:显⽰值yyyy(yyy/yy):2021/1/1,显⽰当年第⼀天,截取到年,剩下的⽉⽇都默认为1mm(mon/month):2021/9/1,显⽰当⽉第⼀天,截取到⽉,剩下的⽇默认为1dd(ddd):2021/9/27,显⽰当前年⽉⽇,截取到⽇d(dy/day):2021/9/26,显⽰当前星期的第⼀天的年⽉⽇,如今天是星期⼀,就显⽰星期天的⽇期,因为星期天是这个星期的第⼀天 hh:2021/9/27 22:00:00,截取到⼩时,剩下的分秒默认为0mi:2021/9/27 22:34:00,截取到分钟,剩下的秒默认为0补充:trunc(number,decimals),截取数值,number是指需要截取的数字,decimal指截取的⼩数位数,默认为0select trunc(90.125) from dual,显⽰90,因为decimal为0select trunc(90.125,2) from dual,显⽰90.12,截取到两位⼩数select trunc(90.125,5) from dual,显⽰90.125,截取到三位⼩数,虽然decimal是5,但是只有三位⼩数。

oracle todate和tochar用法

oracle todate和tochar用法

oracle todate和tochar用法
在Oracle数据库中,TO_DATE和TO_CHAR是两个常用的日期和字符串转换函数。

TO_DATE函数用于将字符串转换为日期类型。

它的语法是:
```sql
TO_DATE(string, format_mask)
```
其中,string是需要转换的字符串,format_mask是日期格式模板,用于指定字符串的日期格式。

例如,以下是一个将字符串''转换为日期类型的例子:
```sql
SELECT TO_DATE('', 'YYYY-MM-DD') FROM dual;
```
TO_CHAR函数用于将日期类型转换为字符串。

它的语法是:
```sql
TO_CHAR(date, format_mask)
```
其中,date是需要转换的日期类型,format_mask是日期格式模板,用于指定输出的字符串格式。

例如,以下是将日期类型''转换为字符串'23-Oct-2023'的例子:
```sql
SELECT TO_CHAR(TO_DATE('', 'YYYY-MM-DD'), 'DD-Mon-YYYY') FROM dual;
```
需要注意的是,TO_CHAR和TO_DATE函数的使用需要指定正确的日期格式模板,否则可能会出现错误或不正确的结果。

oracle加年份的方法 -回复

oracle加年份的方法 -回复

oracle加年份的方法-回复主题:Oracle数据库中加年份的方法简介:在Oracle数据库中,经常需要对日期数据进行加减运算,例如,需要对日期进行加/减一年的操作。

本文将介绍使用Oracle数据库提供的函数和方法来实现对日期加年份的操作。

正文:1. 使用ADD_MONTHS函数Oracle数据库提供了ADD_MONTHS函数,该函数可以在一个日期的基础上添加指定的月份,从而实现对年份的加操作。

语法:ADD_MONTHS(date_value, num_months)说明:- date_value:需要进行加减操作的日期。

- num_months:需要添加的月份数量。

可以为正整数或负整数。

示例:假设有一个“employees”表,其中有一个“hire_date”字段,我们希望对这个字段进行加年份的操作,将日期加1年。

sqlSELECT hire_date, ADD_MONTHS(hire_date, 12) AS one_year_later FROM employees;运行以上SQL语句后,将会返回原始的“hire_date”字段以及加了1年的日期。

2. 使用INTERVAL关键字除了使用ADD_MONTHS函数外,Oracle数据库还提供了使用INTERVAL关键字来进行日期加减操作的方式。

语法:date_value + INTERVAL 'n' YEAR说明:- date_value:需要进行加减操作的日期。

- n:需要添加的年份数量。

可以为正整数或负整数。

假设依然使用前文的“employees”表和“hire_date”字段为例,我们还是对这个字段进行加1年的操作,只是这次我们使用INTERVAL关键字。

sqlSELECT hire_date, hire_date + INTERVAL '1' YEAR AS one_year_later FROM employees;运行以上SQL语句后,将会返回与前文相同的结果。

oracle年月日格式

在Oracle数据库中,日期格式可以使用TO_DATE 函数来指定。

以下是一些常见的日期格式化选项:
年月日(YYYY-MM-DD):
TO_DATE('2023-11-13', 'YYYY-MM-DD')
年月日时分秒(YYYY-MM-DD HH24:MI:SS):
TO_DATE('2023-11-13 12:30:45', 'YYYY-MM-DD HH24:MI:SS')
月/日/年(MM/DD/YYYY):
TO_DATE('11/13/2023', 'MM/DD/YYYY')
月-年(Mon-YYYY):
TO_DATE('Nov-2023', 'Mon-YYYY')
时分秒(HH24:MI:SS):
TO_DATE('12:30:45', 'HH24:MI:SS')
这只是一些示例,你可以根据需要调整格式字符串。

在Oracle 中,日期和时间格式模型的元素包括:
YYYY:四位年份
MM:月份(01 到12)
DD:天(01 到31)
HH24:小时(00 到23)
MI:分钟(00 到59)
SS:秒(00 到59)
Mon:缩写的月份名称(例如:Jan,Feb)
YYYY-MM-DD:标准的日期格式
你可以根据需要组合这些元素,创建适合你数据的日期格式。

oracle中datediff函数的用法

oracle中datediff函数的用法Oracle中的DATEDIFF函数用于计算两个日期之间的时间差。

该函数的语法如下:DATEDIFF(interval, date1, date2)其中,interval参数表示时间间隔的单位,可以是以下值之一:- 'MICROSECOND'(微秒)- 'MILLISECOND'(毫秒)- 'SECOND'(秒)- 'MINUTE'(分钟)- 'HOUR'(小时)- 'DAY'(天)- 'WEEK'(周)- 'MONTH'(月)- 'QUARTER'(季度)- 'YEAR'(年)date1和date2参数表示要比较的两个日期或日期时间值。

DATEDIFF函数计算date1和date2之间的时间差,并返回一个整数值。

如果date1早于date2,则返回正整数;如果date1晚于date2,则返回负整数;如果date1和date2相等,则返回0。

以下是一个示例,演示了如何使用DATEDIFF函数计算两个日期之间的天数差:SELECT DATEDIFF('DAY', '2021-01-01', '2021-01-10') AS DAY_DIFFFROM dual;上述查询将返回一个名为DAY_DIFF的列,其中包含值9,表示从2021年1月1日到2021年1月10日有9天的时间差。

需要注意的是,DATEDIFF函数是Oracle扩展函数,不是标准SQL函数。

在其他数据库系统中,可能具有不同的函数名称或语法。

因此,在跨数据库平台进行迁移时,应该谨慎使用DATEDIFF函数,并根据目标数据库的文档进行相应调整。

Oracle中的DATEDIFF函数是一个用于计算日期之间时间差的函数,可以根据所需的时间间隔单位来计算不同精度的差异。

oracle常用函数使用大全_最新整理

oracle常 用函数使 用大全
单值函 数在查询 中返回单 个值,可 被应用到 select, where子 句,start with以及 connect by 子句 和having 子句。 (一).数值 型函数 (Number Functions ) 数值型函 数输入数 字型参数 并返回数 值型的值 。多数该 类函数的 返回值支 持38位小 数点,诸 如:COS, COSH, EXP, LN, LOG, SIN, SINH, SQRT, TAN, and TANH 支 持36位小 数点。 ACOS, ASIN, ATAN, and ATAN2支 持30位小
n1<0,则 oracle从 右向左数 确认起始 位置 例如: SELECT SUBSTR( 'What is this',-5,3) FROM DUAL;
n1>c1.len gth则返 回空 例如: SELECT SUBSTR( 'What is this',50,3) FROM DUAL; 然后再请 你猜猜, 如果 n2<1,会 如何返回 值呢
3、 TRUNC(n 1[,n2] 返 回截尾到 n2位小数 的n1的 值,n2缺 省设置为 0,当n2为 缺省设置 时会将n1 截尾为整 数,如果 n2为负 值,就截 尾在小数 点左边相 应的位上 。 例如: SELECT TRUNC(2 3.56),TRU NC(23.56, 1),TRUNC (23.56,-1) FROM DUAL;
例如: SELECT REPLAC E('WWhhh hhaT is tHis w W','W','-') FROM
9、 SOUNDE X(c) 神奇 的函数 啊,该函 数返回字 符串参数 的语音表 示形式, 对于比较 一些读音 相同,但 是拼写不 同的单词 非常有用 。计算语 音的算法 如下:

Oracle中日期函数的使用

Oracle中日期函数的使用2009/07/28 21:17[Oracle ]相信很多人都有过统计某些数据的经历,比如,要统计财务的情况,可能要按每年,每季度,每月,甚至每个星期来分别统计。

那在oracle中应该怎么来写sql语句呢,这个时候Oracle的日期函数会给我们很多帮助。

计算2个日期间间隔时间:select to_date('2004/10/10 08:00:00','yyyy/mm/dd hh24:mi:ss')-to_date('2004/10/01 16:00:00','yyyy/mm/dd hh24:mi:ss') data_num from dualselect to_date('2004/10/10','yyyy/mm/dd')-to_date('2004/10/01','yyyy/mm/dd') from dual 结果为9selectto_date(to_char(sysdate,'yyyy/mm/dd'),'yyyy/mm/dd')-to_date('2009/04/01','yyyy/m m/dd') from dual常用日期型函数1。

Sysdate 当前日期和时间SQL> Select sysdate from dual;SYSDATE----------21-6月-052。

Last_day 本月最后一天SQL> Select last_day(sysdate) from dual;LAST_DAY(S----------30-6月-053。

Add_months(d,n) 当前日期d后推n个月用于从一个日期值增加或减少一些月份date_value:=add_months(date_value,number_of_months)SQL> Select add_months(sysdate,2) from dual;ADD_MONTHS----------21-8月-054。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档