sqlserver数据库如何每时/每天/每月/每年任取一条数据

原创 2016年08月30日 19:35:32

    最近用sqlserver+.NET做一个项目,需求是要用图表来显示数据,而且是每时/每天/每月/每年任取一条数据,即如果用户选择时间的区域是同一天,那么按区域的每小时取一条记录,如果区间是一个月,那么每天任取一条数据,如果区间是一年,每个月任取一条数据。。。。。

   开始根本毫无头绪,甚至是想用很暴力的方式解决(多写几条sql语句),最后在别人提供的小demo里面发现了解决方法。

   闲话不说,看sql语句:

   select * 

       from tempview a 

   where not exists(

       select 1 

             from tempview 

      where convert(varchar(13),receiveTime,120)=convert(varchar(13),a.receiveTime,120) and receiveTime>a.receiveTime

     );

   先解释下convert函数:convert函数是用来格式化日期的方法(还有其他用处,自查)。第一个参数很明显是最后返回的数据类型及类型长度(重要),第二个就是要格式化的对象,第三个就是要化成的格式值,如:这里的120 代表的是:yyyy-mm-dd hh:mi:ss(24h)。

  具体的每个参数代表什么含义,可以访问w3c:       http://www.w3school.com.cn/sql/func_convert.asp

   为什么第一个参数加了个重要呢,因为类型长度的变化,将是解决问题的核心。

    每月:  看一下要化成的格式:yyyy-mm-dd hh:mi:ss   当receiveTime只有年份相同时,我们就能够通过比较月份是否相同来选取月份。这时将长度限制到yyyy(4)就能达到效果:所以SQL语句将变为这样:

select * 

       from tempview a 

   where not exists(

       select 1 

             from tempview 

      where convert(varchar(4),receiveTime,120)=convert(varchar(4),a.receiveTime,120) and receiveTime>a.receiveTime

     );

 那么同理可得:

  每月:yyyy-mm  varchar(7);

  每日:yyyy-mm-dd  varchar(10);

  每日:yyyy-mm-dd  hh   varchar(13);

   PS:注意应该要先把用户选择范围内的数据先筛选出来,然后再基于这些数据选择,所以上面的SQL语句用的是视图。

   注意:上面的SQL语句不算随机取,因为他始终取满足条件的最后一条数据。

相关文章推荐

SQLServer查询最近一天,三天,一周,一月,一季度方法

SQL Server DATEPART() 函数 三天 select * from T_news where datediff(day,addtime,getdate())= 0 一周...
  • JR_Way
  • JR_Way
  • 2016年04月28日 16:57
  • 2349

sql 取出一组中时间最大的一条数据

select * from (select * from attachments order by workorderid,LastUpdated desc) t group by wo...

Sql server 取按日期最大的一条记录

select * from T_Test A where date=(select max(date) from T_Test B where A.[Name]=B.[Name]) 原表记录 ...

sql Server把年月日转化成年月 convert

有个字段值例如2012-07-02 00:00:00.000 转化成 2012-7 select distinct CONVERT(varchar(7), 时间列名称, 120 ) fro...

SQL中取一个月的数据的处理方式

前提: 场景设置:表T,其中有属性date表示表中数据的更新时间。 问题:取一个月的数据:2015 年1月的数据。     取前一个月的数,当前月份未知。 一,取一个月的数据 对于知道确定月份的需求,...

数据库专题——SQL语句统计每天、每月、每年的数据

SQL语句统计每天、每月、每年的数据 1、每年 select year(ordertime) 年, sum(Total) 销售合计 from 订单表 group by...

分享[ASP.NET] SQL语句统计每天、每月、每年的数据 编辑:吴立星

SQL语句统计每天、每月、每年的数据 1、每年 select year(ordertime) 年, sum(Total) 销售合计 from 订单表 group by year(orde...

程序员每天、每周、每月、每年该做的事

一、程序员每天该做的事 1、总结自己一天任务的完成情况  最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多 2、考虑自己明天应该做的主要工作   把明天要做...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sqlserver数据库如何每时/每天/每月/每年任取一条数据
举报原因:
原因补充:

(最多只允许输入30个字)