oracle日期查询

按日期范围
select * from t_name where to_date('date','yyyy-MM-dd') between (to_date('date1','yyyy-MM-dd')) and (to_date('date2','yyyy-MM-dd'))
今天
select * from t_name where to_char('date','yyyy-MM-dd')=to_char(sysdate,'yyyy-MM-dd')
本周
select * from t_name where to_char(to_date('date','yyyy-MM-dd'),'iw')=to_char(sysdate,'iw') and to_char(to_date('date','yyyy-MM-dd'),'yyyy')=to_char(sysdate,'yyyy')
本月
select * from t_name where to_char(to_date('date','yyyy-MM-dd'),'yyyy-MM')=to_char(sysdate,'yyyy-MM')
本季
select * from t_name where to_char(to_date('date','yyyy-MM-dd'),'q')=to_char(sysdate,'q') and to_char(to_date('date','yyyy-MM-dd'),'yyyy')=to_char(sysdate,'yyyy')
本年
select * from t_name where to_char(to_date('date','yyyy-MM-dd'),'yyyy')=to_char(sysdate,'yyyy')
上一月
select * from t_name where to_char(to_date('date','yyyy-MM-dd'),'yyyy-MM')=to_char(add_months(trunc(sysdate),-1),'yyyy-MM')
上一年
select * from t_name where to_char(to_date('date','yyyy-MM-dd'),'yyyy')=to_char(add_months(sysdate,-12),'yyyy')


Oracle中TO_DATE格式

​ Year:

​ yy two digits 两位年

​ yyy three digits 三位年

​ yyyy four digits 四位年

​ Month:

​ mm number 两位月

​ mon abbreviated 字符集表示

​ month spelled out 字符集表示

​ Day:

​ dd number 当月第几天

​ ddd number 当年第几天

​ dy abbreviated 当周第几天简写 若是英文版,显示fri

​ day spelled out 当周第几天全写 若是英文版,显示friday

​ Hour:

​ hh two digits 12小时进制

​ hh24 two digits 24小时进制

​ Minute:

​ mi two digits 60进制

​ Second:

​ ss two digits 60进制

​ 其它

​ Q digit 季度

​ WW digit 当年第几周

​ iW digit 当年第几周

​ W digit 当月第几周

注意:

ww的算法为每年1月1日为第一周开始,date+6为每一周结尾
例如:20050101为第一周的第一天,而第一周的最后一天为20050101+6=20050107

iw的算法为星期一至星期日算一周,且每年的第一个星期一为第一周,
例如:20050101为星期六,所以用iw的算法是前年的53周,而20050103之后才是第一周的开始。

Logo

华为云1024程序员节送福利,参与活动赢单人4000元礼包,更有热门技术干货免费学习

更多推荐