首页数据库oracle查询数据库时间 oracle数据库时间日期查询

oracle查询数据库时间 oracle数据库时间日期查询

编程之家2023-10-22110次浏览

大家好,oracle查询数据库时间相信很多的网友都不是很明白,包括oracle数据库时间日期查询也是一样,不过没有关系,接下来就来为大家分享关于oracle查询数据库时间和oracle数据库时间日期查询的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

oracle查询数据库时间 oracle数据库时间日期查询

oracle数据库时间日期查询

TO_DATE格式(以时间:2007-11-02 13:45:25为例)

Year:

yy two digits两位年显示值:07

yyy three digits三位年显示值:007

yyyy four digits四位年显示值:2007

oracle查询数据库时间 oracle数据库时间日期查询

Month:

mm number两位月显示值:11

mon abbreviated字符集表示显示值:11月,若是英文版,显示nov

month spelled out字符集表示显示值:11月,若是英文版,显示november

oracle查询数据库时间 oracle数据库时间日期查询

Day:

dd number当月第几天显示值:02

ddd number当年第几天显示值:02

dy abbreviated当周第几天简写显示值:星期五,若是英文版,显示fri

day spelled out当周第几天全写显示值:星期五,若是英文版,显示friday

ddspth spelled out, ordinal twelfth

Hour:

hh two digits 12小时进制显示值:01

hh24 two digits 24小时进制显示值:13

Minute:

mi two digits 60进制显示值:45

Second:

ss two digits 60进制显示值:25

其它

Q digit季度显示值:4

WW digit当年第几周显示值:44

W digit当月第几周显示值:1

24小时格式下时间范围为: 0:00:00- 23:59:59....

12小时格式下时间范围为: 1:00:00- 12:59:59....

1.日期和字符转换函数用法(to_date,to_char)

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;//日期转化为字符串

select to_char(sysdate,'yyyy') as nowYear from dual;//获取时间的年

select to_char(sysdate,'mm') as nowMonth from dual;//获取时间的月

select to_char(sysdate,'dd') as nowDay from dual;//获取时间的日

select to_char(sysdate,'hh24') as nowHour from dual;//获取时间的时

select to_char(sysdate,'mi') as nowMinute from dual;//获取时间的分

select to_char(sysdate,'ss') as nowSecond from dual;//获取时间的秒

select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual//

2.

select to_char( to_date(222,'J'),'Jsp') from dual

显示Two Hundred Twenty-Two

3.求某天是星期几

select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;

星期一

select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE= American') from dual;

monday

设置日期语言

ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';

也可以这样

TO_DATE('2002-08-26','YYYY-mm-dd','NLS_DATE_LANGUAGE= American')

4.两个日期间的天数

select floor(sysdate- to_date('20020405','yyyymmdd')) from dual;

5.时间为null的用法

select id, active_date from table1

UNION

select 1, TO_DATE(null) from dual;

注意要用TO_DATE(null)

6.月份差

a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')

那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。

所以,当时间需要精确的时候,觉得to_char还是必要的

7.日期格式冲突问题

输入的格式要看你安装的ORACLE字符集的类型,比如: US7ASCII, date格式的类型就是:'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;

注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,

可查看

select* from nls_session_parameters

select* from V$NLS_PARAMETERS

8.

select count(*)

from( select rownum-1 rnum

from all_objects

where rownum<= to_date('2002-02-28','yyyy-mm-dd')- to_date('2002-

02-01','yyyy-mm-dd')+1

)

where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1,'D')

not in('1','7')

查找2002-02-28至2002-02-01间除星期一和七的天数

在前后分别调用DBMS_UTILITY.GET_TIME,让后将结果相减(得到的是1/100秒,而不是毫秒).

9.查找月份

select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY'))"MONTHS" FROM DUAL;

1

select months_between(to_date('02-01-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY'))"MONTHS" FROM DUAL;

1.03225806451613

10. Next_day的用法

Next_day(date, day)

Monday-Sunday, for format code DAY

Mon-Sun, for format code DY

1-7, for format code D

11

select to_char(sysdate,'hh:mi:ss') TIME from all_objects

注意:第一条记录的TIME与最后一行是一样的

可以建立一个函数来处理这个问题

create or replace function sys_date return date is

begin

return sysdate;

end;

select to_char(sys_date,'hh:mi:ss') from all_objects;

12.获得小时数

extract()找出日期或间隔值的字段值

SELECT EXTRACT(HOUR FROM TIMESTAMP'2001-02-16 2:38:40') from offer

SQL> select sysdate,to_char(sysdate,'hh') from dual;

SYSDATE TO_CHAR(SYSDATE,'HH')

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

2003-10-13 19:35:21 07

SQL> select sysdate,to_char(sysdate,'hh24') from dual;

SYSDATE TO_CHAR(SYSDATE,'HH24')

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

2003-10-13 19:35:21 19

13.年月日的处理

select older_date,

newer_date,

years,

months,

abs(

trunc(

newer_date-

add_months( older_date,years*12+months)

)

) days

from( select

trunc(months_between( newer_date, older_date)/12) YEARS,

mod(trunc(months_between( newer_date, older_date)),12) MONTHS,

newer_date,

older_date

from(

select hiredate older_date, add_months(hiredate,rownum)+rownum newer_date

from emp

)

)

14.处理月份天数不定的办法

select to_char(add_months(last_day(sysdate)+1,-2),'yyyymmdd'),last_day(sysdate) from dual

16.找出今年的天数

select add_months(trunc(sysdate,'year'), 12)- trunc(sysdate,'year') from dual

闰年的处理方法

to_char( last_day( to_date('02'||:year,'mmyyyy')),'dd')

如果是28就不是闰年

oracle数据库怎么查询几个时间段的数据

你查到的是2022-06-21的数据,那么只需要再加一天2021-06-21不就可以了,在时间的地方加一个or,用扩考括起来就可以了。然后在group by和orderby的时候,加一个出院时间就OK了。

不过现在这个时间不能直接用,因为你的出院时间是包括时分秒的,这里你需要截取到日,不然group by和orderby的时候的时候也会按照时分秒去分组排序的。

至于出来以后的显示结果什么样,要看你要的是什么样子,然后再用其他分组调整函数(比如cube等)想办法调整最后的顺序。

oracle数据库怎么表示时间

Oracle中如何获取系统当前时间

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

ORACLE里获取一个时间的年、季、月、周、日的函数

select to_char(sysdate,'yyyy') from dual;--年

select to_char(sysdate,'MM') from dual;--月

select to_char(sysdate,'dd') from dual;--日

select to_char(sysdate,'Q') from dual;--季

select to_char(sysdate,'iw') from dual;--周--按日历上的那种,每年有52或者53周

/*

hh小时(12)

hh24小时(24)

Mi分

ss秒

D周中的星期几

ddd年中的第几天

WW年中的第几个星期

W该月中第几个星期--每年的1月1号至1月7号为第一周,以此类推,每年53周

*/

获取系统日期: SYSDATE()

格式化日期:

TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS)

或 TO_DATE(SYSDATE(),'YY/MM/DD HH24:MI:SS)

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;

select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;

select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual

select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh24:mi:ss') from dual

而如果把上式写作:

select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh:mi:ss') from dual

则会报错,因为小时hh是12进制,14为非法输入,不能匹配。

转换的格式:

表示 year的:

y表示年的最后一位、

yy表示年的最后2位、

yyy表示年的最后3位、

yyyy用4位数表示年

表示month的:

mm用2位数字表示月、

mon用简写形式,比如11月或者nov、

month用全称,比如11月或者november

表示day的:

dd表示当月第几天、

ddd表示当年第几天、

dy当周第几天,简写,比如星期五或者fri、

day当周第几天,全称,比如星期五或者friday

表示hour的:

hh 2位数表示小时 12进制、

hh24 2位数表示小时 24小时

表示minute的:

mi 2位数表示分钟

表示second的:

ss 2位数表示秒 60进制

表示季度的:

q一位数表示季度(1-4)

另外还有ww用来表示当年第几周 w用来表示当月第几周。

当前时间减去7分钟的时间

select sysdate,sysdate- interval'7' MINUTE from dual;

当前时间减去7小时的时间

select sysdate- interval'7' hour from dual;

当前时间减去7天的时间

select sysdate- interval'7' day from dual;

当前时间减去7月的时间

select sysdate,sysdate- interval'7' month from dual;

当前时间减去7年的时间

select sysdate,sysdate- interval'7' year from dual;

时间间隔乘以一个数字

select sysdate,sysdate- 8*interval'7' hour from dual;

select to_char(sysdate,'yyyy-mm-dd:hh24:mi:ss:pm:dy') from dual;年月日 24制小时分秒上/下午星期中文;

--获取11月天数--select to_char(last_day(to_date('2010-11-1','YYYY-MM-DD')),'DD') from dual;

--获取12月天数--select to_char(last_day(to_date('2010-12-1','YYYY-MM-DD')),'DD') from dual;

显示上个礼拜一到礼拜日 SELECT to_char(SYSDATE,'yyyymmdd')-to_number(to_char(SYSDATE,'d')-1)- 6, to_char(SYSDATE,'yyyymmdd')-to_number(to_char(SYSDATE,'d')-1) from dual

oracle查询数据库时间和oracle数据库时间日期查询的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

富士通服务器,富士通和富士康有什么区别工作流数据库设计,关于工作流的数据库设计