十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
--1、取某天在本周中的第几天(默认周日开始算第1天)
公司专注于为企业提供成都网站制作、做网站、外贸营销网站建设、微信公众号开发、商城建设,小程序开发,软件定制开发等一站式互联网企业服务。凭借多年丰富的经验,我们会仔细了解各客户的需求而做出多方面的分析、设计、整合,为客户设计出具风格及创意性的商业解决方案,创新互联公司更提供一系列网站制作和网站推广的服务。
select to_char(to_date('2011-04-11','yyyy-mm-dd'), 'd') from dual;
--2、如果要从周一开始算第1天,需要做一些手脚
--大概思路是:1变成7,2变成1,3变成2......,7变成6
select decode(to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd'),
1,
7,
to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd') - 1)
from dual;
--3、再根据上面的结论倒推到上周时间
select to_date('2011-04-04', 'yyyy-mm-dd') -
decode(to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd'),
1,
7,
to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd') - 1) - 7 + 1,
to_date('2011-04-04', 'yyyy-mm-dd') -
decode(to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd'),
1,
7,
to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd') - 1) - 7 + 1 + 6
from dual;
写法有很多种,例如下面的:
方法一:select * from dual where time between to_date('2012-06-18 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2012-06-18 23:59:59','yyyy-mm-dd hh24:mi:ss');
方法二:select * from dual where to_char(time,'yyyy-mm-dd')='2012-06-18';
方法三:select * from dual where trunc(time)=to_date('2012-06-18','yyyy-mm-dd');
当然楼主也可以按上面的先转换下日期的显示格式再查询撒,都可以的,呵呵!!!
用sql的查询方法是,例如您需要查询2009年有多少天,用sql表达为
select to_date('20091231','yyyymmdd') - to_date('20090101','yyyymmdd') + 1 from dual
查询出来的结果就是yyyy这一年有多少天
WHERE DATE=TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE,-2))+23,'DD')
AND DATE=
TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE,-1))+22,'DD')
create or replace function get_week_start_end(v_date in date) return varchar2 is
v_datev_week varchar2(512);
begin
select '你录入的时间为'||v_date||'。'||
'本周的第一天时间为:'||
to_char((trunc(v_date,'yyyy')+to_number(to_char(v_date,'ww'))*7-7),'yyyy-mm-dd')
||'本周期的最后一天为:'||
to_char((trunc(v_date,'yyyy')+to_number(to_char(v_date,'ww'))*7-1),'yyyy-mm-dd')
into v_datev_week from dual;
return(v_datev_week);
end get_week_start_end;
/
--以上是方法
必须传入日期哦(也可以更改一下直接传入字符),测试查询语句
select get_week_start_end(to_date('2014-10-10','yyyy-mm-dd')) from dual;