Oracle时间格式的SQL语句

本文介绍了Oracle数据库中处理日期和时间的各种方法,包括获取当前时间、进行时间加减运算、查询特定时间点后的数据等实用技巧,并展示了如何计算日期所在周数及星期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-12小时制系统当前时间(上午)
 
SQL> select to_char(sysdate, 'YYYY-MM-DD HH12:MI:SS AM' ) from dual;
 
--24小时制系统当前时间(下午)
 
SQL> select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS PM' ) from dual;
 
--当前时间的后一天时间
 
select to_char(Sysdate+1, 'YYYY-MM-DD HH24:MI:SS' ) from dual;
 
--当前时间的后一个小时
 
select to_char(Sysdate+1/24, 'HH24:MI:SS' ) from dual;
 
--当前时间的前一分钟
 
select to_char(Sysdate-1/21/60, 'HH24:MI:SS' ) from dual;
 
--拿到某时间点之后的数据(做增量操作很有用) Date 类型时间
 
select * from T_TABLE where LAST_MODIFY_TIME>TO_DATE( '2013-05-08 14:34:45' , 'yyyy-mm-dd hh24:mi:ss' )
 
--TIMESTAMP 时间戳类型的时间
 
select * from T_TABLE  where UPDATED_TIME > TO_TIMESTAMP( '2013-08-08 13:30:00' , 'yyyy-mm-dd hh24:mi:ss.ff' )
 
--MySql的 Timestamp时间类型last_modified  ,datetime类型
 
select * from t_XXXX  where last_modified> '2013-03-07 15:31:43'
 
--Oracle中插入带时间戳字段的数据
 
insert into T_XXX (name1,name2,update_time)  values (?,?,Sysdate);   //update_time为 Timestamp 类型  Sysdate:系统当前时间
 
--插入带时间字段 to_date( ),TO_TIMESTAMP( )
 
insert into T_XXX (name1,name2,update_time)  values (?,?,to_date( '2013-2-28 15:42:56' , 'yyyy-mm-dd hh24:mi:ss' );
 
insert into T_XXX (name1,name2,last_modify_time)  values (?,?,TO_TIMESTAMP( '2013-08-08 14:30:00' , 'yyyy-mm-dd hh24:mi:ss.ff' ));




1.oracle 

从系统里取出一个月的第几周

 

select

 date_col,to_number(to_char(trunc(

sysdate

,

'yyyy'

),

'd'

)) 

year_week_day,first_day_week,week_no,week_no - first_day_week + 

1

 

week_no 

from

 ( 

  

select

 date_col, 

    

  to_number(to_char(trunc(

sysdate

,

'mm'

) + 

7

 - 

1

 ,

'ww'

)) 

first_day_week, 

    

  to_number(to_char(date_col + 

7

 - 

1

,

'ww'

)) week_no 

  

from

 ( 

    

select

 trunc(

sysdate

,

'mm'

) + 

rownum

 - 

1

 date_col 

   

from

 dba_objects 

   

where

 

rownum

 <= to_number(to_char(last_day(

sysdate

),

'dd'

))))

 

 

2

oracle

函数如何判断指定日期是当月的第几周的函数

 

得到某天在本年的第几周,

那么这一天的在本年的第几周

 

减去

 

这一天所在月的

第一天在本年的第几周再加一,就是这一天在当月的周数。

 

select

 ((

select

 to_char(to_date(

'2011-11-1'

,

'YYYY-MM-DD'

),

'iw'

from

 dual)-(

select

 

to_char(to_date(

'2011-11-1'

,

'YYYY-MM-DD'

),

'iw'

from

 dual))+

1

 

 

当月的第几周

 

from

 

 

dual

 

3

、在

oracle

中如何取得指定日期是该年的第几周

 

1

)判断指定的时间是该年的第几周:

 

例:

 

select

 to_char(to_date(

'2011-11-9'

,

'YYYY-MM-DD'

),

'iw'

from

 dual 

2

)判断当前时间是该年的第几周:

 

例:

 

select to_char(sysdate,'iw') from dual;  

4

、如何取得指定日期是星期几:

 

1

)得到当前日期是星期几

 

select

   to_char(

sysdate

'day '

)  

 

from

  

 dual

 

2

)得到指定日期是星期几

 

select

 

to_char(to_date(

'2011-11-9 

'

'yyyy-mm-dd 

'

), 

'day 

'

from

 

dual; 

3

)指定日期是一年当中的第几周和周几

 

select

    to_char(to_date( 

'2011-11-10 '

'yyyy-mm-dd '

), 

'day-iw '

)     

from

    

 dual; 

5

、总结

 

select

 

to_char(TO_DATE(

'20110101'

,

'YYYYMMDD'

) ,

'yyyyiw'

)  

as

 week, 

--oracle

当年的第几周

 

to_char(TO_DATE(

'20110101'

,

'YYYYMMDD'

) ,

'yyyyww'

)  

as

 week2,

--oracle

当年的第几周

 

to_char(TO_DATE(

'20110101'

,

'YYYYMMDD'

),

'yyyy'

as

 

year

,

--oracle

求第几年

 

to_char(TO_DATE(

'20110101'

,

'YYYYMMDD'

) ,

'yyyymm'

as

 

month

,

--oracle

当年的第几月

 

to_char(TO_DATE(

'20110101'

,

'YYYYMMDD'

),

'yyyyddd'

as

 

day

--oracle

求当年

的第几天

 

to_char(TO_DATE(

'20110401'

,

'YYYYMMDD'

) ,

'yyyyq'

as

 quarter

-- oracle

当年的第几季度

 

from

 dual



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值