Oracle 获取上周一到周末日期的查询sql语句

代码如下:

-- Oracle 取上周一到周末的sql

-- 这样取的是 在一周内第几天,是以周日为开始的
select to_char(to_date('20130906','yyyymmdd'),'d') from dual;
--结果:6 注释:2013.09.06是周五,为本周的第六天

select to_char(sysdate+(2-to_char(sysdate,'d'))-7,'yyyymmdd') from dual;---上周一
select to_char(sysdate+(2-to_char(sysdate,'d'))-1,'yyyymmdd') from dual;---上周日

-- 一个更简单的写法 , 返回date类型
select trunc(sysdate,'iw') - 7 from dual;---上周一
select trunc(sysdate,'iw') - 1 from dual;--上周日

-- 这样查出来是本周一
select trunc(sysdate,'iw') from dual;

select trunc(to_date('20130915','yyyymmdd'),'iw') from dual;
-- 结果:2013/9/9 注释:20130915 为周日

-- 返回char类型
select to_char(trunc(sysdate,'iw') - 7,'yyyymmdd') from dual;--上周一
select to_char(trunc(sysdate,'iw') - 1,'yyyymmdd') from dual;--上周日

-- 获取上周一的函数
create or replace function fun_acc_getlastweekstart(systemdate in date)
return varchar2 is
result_str varchar2(15);
begin
select to_char(trunc(systemdate, 'iw') - 7, 'yyyymmdd')
into result_str
from dual;
return result_str;
end fun_acc_getlastweekstart;

-- 获取上周日的函数
create or replace function fun_acc_getlastweekend(systemdate in date) return varchar2 is
result_str varchar2(15);
begin
select to_char(trunc(systemdate, 'iw') - 1, 'yyyymmdd')
into result_str
from dual;
return result_str;
end fun_acc_getlastweekend;

-- 测试这个函数
select fun_acc_getlastweekstart(sysdate) from dual;
select fun_acc_getlastweekend(sysdate) from dual;
select fun_acc_getlastweekstart(to_date('20130915','yyyymmdd')) from dual;
select fun_acc_getlastweekend(to_date('20130915','yyyymmdd')) from dual;
--查询结果:20130826、20130901、20130902、20130908
-- 注:
select sysdate from dual;
--查询结果:2013/9/6 9:45:14

(0)

相关推荐

  • ORACLE 毫秒与日期的相互转换示例

    毫秒转换为日期 SELECT TO_CHAR(1406538765000 / (1000 * 60 * 60 * 24) + TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') AS CDATE FROM DUAL; 日期转换毫秒 SELECT TO_NUMBER(TO_DATE('2014-07-28 17:12:45', 'YYYY-MM-DD HH24:MI:SS') - TO_DA

  • Oracle查询优化日期运算实例详解

     加减日.月.年 在Oracle中,date类型可以直接加减天数,而加减月份要用add_months函数. select a.hiredate 雇用日期, a.hiredate + 5 加5天, a.hiredate - 5 减5天, add_months(hiredate, 5) 加5个月, add_months(hiredate, -5) 减5个月, add_months(hiredate, 5 * 12) 加5年, add_months(hiredate, -5 * 12) 减5年 fro

  • Oracle最大日期获取方法

    在开发应用中如何获取oracle的最大日期呢?本文将提供这样一个获取方法,需要的朋友可以参考下Sql代码 复制代码 代码如下: -- Created on 2010/06/08 by NAN declare -- Local variables here TYPE t_test IS TABLE OF DATE INDEX BY BINARY_INTEGER; v_test t_test; v_date DATE; BEGIN -- Test statements here v_test(1)

  • 详解oracle 日期格式(总结)

    to_date("要转换的字符串","转换的格式")   两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,"转换格式" ) 即把给定的日期按照"转换格式"转换. 转换的格式: 表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年 表示month的:mm 用2位数字表示月:mon 用简写形式 比如11月或者nov :m

  • oracle 日期时间函数使用总结

    今天闲来没事, 特意从网上整理了一些资料, 以备日后查阅. 一.常用日期数据格式 1. 获取年的最后一位, 两位, 三位, 四位 select to_char(sysdate,'Y') from dual; -- 获取年的最后一位select to_char(sysdate,'YY') from dual; -- 获取年的最后两位select to_char(sysdate,'YYY') from dual; -- 获取年的最后三位select to_char(sysdate,'YYYY') f

  • ORACLE中的日期加减操作实例介绍

    无论是DATE还是timestamp都可以进行加减操作. 可以对当前日期加年.月.日.时.分.秒,操作不同的时间类型,有三种方法: 1 使用内置函数numtodsinterval增加小时,分钟和秒 2 加一个简单的数来增加天 3 使用内置函数add_months来增加年和月 例: 对当前日期增加一个小时: 复制代码 代码如下: SQL> select sysdate, sysdate+numtodsinterval(1,'hour') from dual ; SYSDATE           

  • Oracle to_char 日期转换字符串语句分享

    1>以12小时制显示 SQL>select to_char(sysdate,'YYYY-MM-DD HH12:MI:SS AM')from dual; TO_CHAR(SYSDATE,'YYYY-MM-DDHH1 ------------------------------ 2007-06-29 02:50:06 下午 2>以24小时制显示 SQL>  select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS AM')from dual; TO_C

  • oracle中to_date详细用法示例(oracle日期格式转换)

    TO_DATE格式(以时间:2007-11-02 13:45:25为例) 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(sys

  • Oracle插入日期数据常见的2个问题和解决方法

    1.无效的月份问题 最近在往数据库中插入时间时,Oracle报"无效的月份问题",具体SQL如下: 复制代码 代码如下: INSERT INTO TS_COUNT (       ID,CNAME, STARTTIME, ENDTIME,VALUE   ) VALUES (       1, 'John', '01/06/2013', '02/06/2013', 800   ); 报错:ORA-01843:无效的月份.这是由于日期格式不对造成的. 解决办法: 用select sysda

  • Oracle 获取上周一到周末日期的查询sql语句

    复制代码 代码如下: -- Oracle 取上周一到周末的sql -- 这样取的是 在一周内第几天,是以周日为开始的 select to_char(to_date('20130906','yyyymmdd'),'d') from dual; --结果:6 注释:2013.09.06是周五,为本周的第六天 select to_char(sysdate+(2-to_char(sysdate,'d'))-7,'yyyymmdd') from dual;---上周一 select to_char(sys

  • 查询Oracle中正在执行和执行过的SQL语句

    查询Oracle正在执行的sql语句及执行该语句的用户 SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, paddr, sql_text 正在执行的SQL, b.machine 计算机名 FROM v$process a, v$session b, v$sqlarea c WHERE a.addr = b.paddr AND b.sql_hash_value = c.hash_value 其它网友给出的正

  • laravel 获取某个查询的查询SQL语句方法

    如下所示: DB::connection()->enableQueryLog();#开启执行日志 $count = DB::table('test') //执行查询 ->whereNull('deleted_at') ->where('id', '=', 3) ->where('Name', '=', '测试') ->count(); print_r(DB::getQueryLog()); //获取查询语句.参数和执行时间 Array ( [0] => Array (

  • 获取django框架orm query执行的sql语句实现方法分析

    本文实例讲述了获取django框架orm query执行的sql语句实现方法.分享给大家供大家参考,具体如下: 利用Django orM 可以很方便的写出很多查询,但有时候,我们需要检查这些利用 orM 生成的 SQL 语句是否正确,就需要检查这些ORM 生成的 原生的SQL 语句是否正确.经过测试有如下几种方法: 1. 通过数据库的跟踪日志,可以看到查询的语句,比如mysql 就可以配置把所有的 SQL 语句打印到日志中,但这种方式并不推荐,只是没有办法的时候才这么做. 2. 利用django

  • djang常用查询SQL语句的使用代码

    将django语法和sql对应一下,希望对大家有所帮助 查询单个列的值 story.object.values_list("url", flat=True) SELECT `story`.`url` FROM `hbtc_story` WHERE `story`.`status` = resolved AND查询 Stories.objects.filter(Q(status='resolved') & Q(status='developing')) SELECT * FROM

  • Java反射 JavaBean对象自动生成插入,更新,删除,查询sql语句操作

    通过反射根据提供的表名.POJO类型.数据对象自动生成sql语句. 如名为 User 的JavaBean与名为 user 的数据库表对应,可以提供一个封装有数据的User对象user,根据user中含有的数据自动生成sql语句. 1.生成插入语句(插入user中包含的非空数据的语句): String insertSql = getInsertSql("user", User.class, user); 2.生成更新语句(user中id不能为空): String updateSql =

  • Oracle 数据库连接查询SQL语句

    内连接(inner join). 外连接: 全连接(full join).左连接(left join).右连接(right join). 交叉联接(cross join). 外连接与内连接不一样,外连接返回的查询结果中不仅包含符合条件的行,还包括左表(左外连接),右表(右外连接)或者两个连接表(全外连接)中的所有不符合条件的数据行. 1.左连接 (left [outer] join) 左外连接就是将左表的所有数据分别于右表的每条数据进行连接组合,返回的结果除内连接的数据外,还有左表中不符合条件的

  • oracle数据库添加或删除一列的sql语句

    alert table 表名 add column 列名 alter table 表名 drop column 列名 eg: alter table TPointManage add AddPointsReason number(8) alter table textattrdetail drop column AddPointsReason 需要注意的一点,如果要修改的表,不是当前的用户的表,那么就需要添加上用户的名称.以及有修改此表的权限.

  • 交叉表查询sql语句

    表一:      组名      成员1id      成员2id      成员3id 示例数据:      冲锋组     1       2       3      后卫组     2       3       4 表二:      成员id      成员姓名 示例数据:      1     张三      2     李四      3     王五      4     陆二 要求结果 冲锋组     张三       李四       王五      后卫组     李四  

  • Oracle之SQL语句性能优化(34条优化方法)

    好多同学对sql的优化好像是知道的甚少,最近总结了以下34条仅供参考. (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WH

随机推荐