sql 查询中 有12个月表 写一个查询从中提取所有日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 查询中 有12个月表 写一个查询从中提取所有日期相关的知识,希望对你有一定的参考价值。

可使用SQL datediff (时间差)来查询某个月份,这是最简的方法:
DATEDIFF 函数
功能 返回两个日期之间的间隔。
语法 DATEDIFF ( date-part, date-expression-1, date-expression-2 )
date-part : year | quarter | month | week | day | hour | minute | second | millisecond
参数 date-part 指定要测量其间隔的日期部分。
要获取某个月的SQL为如下:
select * from table where datediff(month,date_ColName,\'2014-12-1\')=0
date_ColName:为表中的日期格式的列
\'2014-12-1\':此为你要查询的某个月的日期格式。
参考技术A select * from
(select 日期 from 月表1
union all select 日期 from 月表2
union all select 日期 from 月表3
union all select 日期 from 月表4
union all select 日期 from 月表5
union all select 日期 from 月表6
union all select 日期 from 月表7
union all select 日期 from 月表8
union all select 日期 from 月表9
union all select 日期 from 月表10
union all select 日期 from 月表11
union all select 日期 from 月表12
) t
参考技术B 能把问题描述清楚一点吗? 表/字段 贴出来追问

比如说201301 、201302、 201304。。。。。。201412 这12个表,每个月表都有一个时间字段 ,是每个月的1—-30日 ,现在想从中取出日期和当前日期比较,相等的话就显示这个日期的内容,应该怎样查询,只能联合12个查询吗?有没有更简单的?谢谢!

追答

那有这样建表的,查询的时候能确定日期吗 ?确定日期不就 确定了表名,如果非要 显示 12个月的数据 除了 union all 好像没有别的办法?

追问

想取得12个月的数据,和今天的日期比较,如果是今天的,就显示,主要是想插到jsp页面里

追答

12个月的数据 你想和 今天比较什么? 你是不是想说 今天日期如果在 12个月的日期里面 就显示到页面里面 事实上你可以 这样 : 取当前日期 比如现在是 2013/09/25 你通过 查系统所有表名 看是否存在 201309 这张表select name from sysobjects where xtype='U' where name =‘201309’; 如果 count >1 说明有数据 就可以直接 select * from ”201309“ where day =‘25’ 这样不就OK 了

本回答被提问者采纳

SQL Server 查询以查找间隔或 12 个月或更长时间的记录

【中文标题】SQL Server 查询以查找间隔或 12 个月或更长时间的记录【英文标题】:SQL Server query to find records with gap or 12 months or greater 【发布时间】:2016-02-02 14:32:24 【问题描述】:

我有一个记录表,每条记录都有一个创建日期和一个用户 ID。

我正在尝试查找该给定用户的记录之间存在 12 个月或更大间隔的所有记录。我在 SQL Server 中编写的最简单的方法是什么?

select * 
from records 
where last record and lastest record is greater than 12 months.

【问题讨论】:

【参考方案1】:

您正在寻找lag()lead() 函数。这在 SQL Server 2012+ 中可用。

select r.*
from (select r.*,
             lag(createddate) over (partition by userid order by createddate) as last_createddate
      from records r
     ) r
where last_createddate is null or
      last_createddate < dateadd(year, -1, createddate);

在早期版本的 SQL Server 中,您可以使用 outer apply 模拟逻辑,尽管性能通常更差。

【讨论】:

以上是关于sql 查询中 有12个月表 写一个查询从中提取所有日期的主要内容,如果未能解决你的问题,请参考以下文章

sql 怎么查询每一年1到12个月的数据

SQL Server 查询以查找间隔或 12 个月或更长时间的记录

php+mysql中怎么查询最近12个月每个月的数据

从LINQ到SQL获取SQL查询?

如果我创建索引,SQL 查询会快得多

SQL 查询中的 CONVERT 或 CAST 字段