[Oracle] 日期处理

本文介绍了Oracle数据库中日期与字符串互相转换的方法,包括如何使用TO_DATE和TO_CHAR函数实现不同格式的转换,并探讨了获取特定日期周数的两种方式及其区别。

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

日期与字符串转换

在进行日期限定的比对时,可能会用到这个场景。

比如查找 某个日期栏位 大于"2013/12/12" 的所有数据。

"2013/12/12" 这是一个字符串, 要和日期比对,就要转换了。

1. 将字串转化为日期--使用 TO_DATE 函数

select TO_DATE('20131212','YYYYMMDD') from DUAL; 

返回: 12-12月-13  (和本地安装oracle 的日期格式有关)


2. 将日期转化为字串-- TO_CHAR

select to_char(sysdate,'yyyy/mm/dd') from DUAL;

返回: 2013/12/12 

以yyyy/mm/dd 显示当前日期。

sysdate 是当前日期。


获取日期的星期

可以使用 ww 或是 iw 来获取星期。比如:

select to_char(sysdate,'yyyy/ww') from DUAL;
返回: 2013/50  
第50周。

ww  和 iw 的区别是:

1. ww

这是 Oracle 计算星期的标准。 每年的 1 月1号作为这一年的第一天。(不管这一天是星期几)

比如:  2013/01/01 是星期二, 这一天作为2013年的第一天。

2. iw

这是ISO的标准。

 星期一至星期日算一周,且每年的第一个星期一为第一周,

select to_char(TO_DATE('2013/12/01','yyyy/mm/dd'),'yyyy/iw') from DUAL; 

这是看 2013/12/01是这一年的第多少周。

返回: 48

注意: 如果按每周从周日开始的话, 就要在日期上加 1 天了

select to_char(TO_DATE('2013/12/01','yyyy/mm/dd')+1,'yyyy/iw') from DUAL; 
返回 49 了。


==》  特别注意, 以上的获取周数的方法当遇到跨年的时候, 会出现问题。

细部参见: 

Oracle 获取日期的周数


前言


前言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oscar999

送以玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值