sql 怎样获取 时间段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 怎样获取 时间段相关的知识,希望对你有一定的参考价值。

例如:有两种表a b,a表开始时间2013-01-10 结束时间2013-12-30 b表开始时间2013-05-01 结束时间 2013-05-30 要根据b的时间来获取a表这个时间段的内容 sql 怎么写

参考技术A --获取本周时间段值
SELECT DATEADD(WK,DATEDIFF(WK,0,GETDATE()),-1)
SELECT DATEADD(WK,DATEDIFF(WK,0,GETDATE()),6)
--获取本月时间段值
SELECT DATEADD(MM,DATEDIFF(MM,0,GETDATE()),0)
SELECT DATEADD(MS,-3,DATEADD(MM,DATEDIFF(M,0,GETDATE())+1,0))
--获取本年时间段值
SELECT DATEADD(YY,DATEDIFF(YY,0,GETDATE()),0)
SELECT DATEADD(MS,-3,DATEADD(YY,DATEDIFF(YY,0,GETDATE())+1,0))
参考技术B

请问a表和b表有关联字段吗?如果有的话就:

select * from 表a,表b where a表关联字段=b表关联字段 and b表时间字段 between '2013-05-01' and '2013-05-30';

参考技术C 这两个表有两个时间字段吗?还是一个时间字段?
如果a表的时间字段为datetime,b表的时间字段是datetime2:
select * from a where a.datetime in
(select b.datetime2 from b where b.datetime2>=to_date('2013-05-01','yyyy-MM-dd') and b.datetime2<=to_date('2013-05-30','yyyy-MM-dd'))
and a.datetime >=to_date('2013-01-10','yyyy-MM-dd') and a.datetime<=to_date('2013-12-30','yyyy-MM-dd')
试一下,是否是你要的结果。追问

有两个,a 表 begindate ,enddate b表也是一样的

追答

select * from a where a.begindate >=
min(select b.begindate from b where b.begindate>=to_date('2013-05-01','yyyy-MM-dd') and b.enddate=to_date('2013-05-01','yyyy-MM-dd') and b.enddate=to_date('2013-01-10','yyyy-MM-dd') and a.enddate<=to_date('2013-12-30','yyyy-MM-dd')

本回答被提问者采纳
参考技术D select a.内容字段 from a ,b where a.时间=b.时间

PLSQL中怎样获取未知结构的动态游标的字段名

参考技术A 如果给的是一个查询SQL文本,那么事情很容易(对于9i及以上版本),只要使用dbms_sql.open_cursor打开游标,再使用dbms_sql.describe_columns即可得到游标的所有字段名称及类型等数据,存储在一个集合类型变量中(具体请看dbms_sql.desc_tab)。请参考如下PLSQL代码:
DECLARE
l_curidINTEGER; l_cntNUMBER;
l_desctabdbms_sql.desc_tab; l_sqltextVARCHAR2(2000); BEGIN
l_sqltext := 'select owner,object_type,object_name from dba_objects
where rownum<= 10';--可以是任意有效的查询sql文本 l_curid := dbms_sql.open_cursor();
dbms_sql.parse(l_curid, l_sqltext, dbms_sql.native); dbms_sql.describe_columns(l_curid, l_cnt, l_descTab);
FOR i IN1 ..l_desctab.count LOOP
dbms_output.put(lpad(l_desctab(i).col_name, 20)); ENDLOOP;
dbms_output.new_line;
dbms_sql.close_cursor(l_curId); END;
运行结果如下:
OWNER OBJECT_TYPE OBJECT_NAME
注意,必须使用 DBMS_SQL.OPEN_CURSOR 打开游标,否则,就不是这种处理方法了。本回答被提问者和网友采纳

以上是关于sql 怎样获取 时间段的主要内容,如果未能解决你的问题,请参考以下文章

sql 怎样将时间转成日期?

怎样用sql语句获取某个字段的长度

SQL语句自动获取本机日期时间

SQL,怎样获取表描述说明,以及字段说明描述,

Sql中怎么样获取Datetime中的日

delphi SQL 怎样获取返回数据中某条记录