sql数据问题。某个时间段内汇总特别慢,而其他时间段汇总就很快,这是什么原因呢?

问题描述

sql数据问题。某个时间段内汇总特别慢,而其他时间段汇总就很快,这是什么原因呢?
同一个表,有时间字段,比如我现在查询2015年5月份数据特别的慢,有时候根本就查不出来,而其他月份的数据就很快。

解决方案

本文对应Sql Server 中常用的时间查询的进行一些汇总,例如查询当天的、本周的、本月的、本季度的,某个时间段内的时间。

实例
实例(我的)表名:mytable 字段名:mydate

(一)、当天(某两个时间段)

select * from mytable where DATEDIFF(ddmydateGETDATE())=0语法:DATEDIFF(datepartstartdateenddate)
复制代码
意义:DATEDIFF() 函数返回两个日期之间的天数。

datepart 参数值:(表1-1)
datepart
缩写

yy yyyy
季度
qq q

mm m
年中的日
dy y

dd d

wk ww
星期
dw w
小时
hh
分钟
mi n

ss s
毫秒
ms
微妙
mcs
纳秒
ns

例如:
SELECT DATEDIFF(dd'2012-5-17''2012-12-18') AS DiffDate
复制代码

结果:
DiffDate
1

(二)、本周
select * from mytable where
DATEPART(wk mydate)==DATEPART(wkGETDATE()) and -- 周时间相等
DATEPART(yy mydate) = DATEPART(yy GETDATE()) -- 年时间相等
复制代码
语法:DATEDIFF(datepartdate)
意义:DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

datepart
参数值:见表(1-1)。

(三)、本月
select * from mytable where
DATEPART(mm mydate)==DATEPART(mmGETDATE()) and -- 月时间相等
DATEPART(yy mydate) = DATEPART(yy GETDATE()) -- 年时间相等
复制代码
语法:DATEDIFF(datepartdate)
意义:DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

datepart
参数值:见表(1-1)。
...其它如上语法。

总结

希望本文对大家有用,如有好的建议欢迎留言补充,如果对您有用,请点击支持,谢谢
时间: 2024-11-16 18:53:13

sql数据问题。某个时间段内汇总特别慢,而其他时间段汇总就很快,这是什么原因呢?的相关文章

用sql语句遍历一个表里异常(时间段内很大或者很小)的数据,并将异常数据修改成相应时间段前的数据

问题描述 用sql语句遍历一个表里异常(时间段内很大或者很小)的数据,并将异常数据修改成相应时间段前的数据 我有一张表,里面3字段id.time.value. 由于value中的部分值异常的大,我想批量修改数据,比如说4.1日-4.20日出现中出现异常大的数据,我想把异常大的数据修改成和他时间段(时间段前或者后)差不多的数据,请问下这个sql应该怎么写啊.我用游标的方法怎么实现.谢谢啊! 解决方案 不知道你的数据库是什么,用MS SQL SERVER示意 建表SQL如下 CREATE TABLE

oracle-Oracle查询一定时间段内每一段时间数据问题

问题描述 Oracle查询一定时间段内每一段时间数据问题 我有这样一张业务表,表结构如下 (ID) 住宿时间 押金金额 退宿时间 住宿费用 00000001 2009-09-21 50 2009-09-28 30 00000001 2009-09-25 50 2009-09-27 30 00000002 2009-09-25 80 2009-09-28 50 00000003 2009-09-28 90 2009-09-30 40 ........ .. .......... .. ......

sql server-SQLServer 中如何按一定间隔时间分组统计时间段内出现次数

问题描述 SQLServer 中如何按一定间隔时间分组统计时间段内出现次数 我的原始数据是这样的 |ID |time |Status |215CSZ00 |2015/11/30 23:53:41 |2 |21CUG0HB |2015/11/30 23:54:17 |1 |21CUG0HB |2015/11/30 23:54:22 |1 |21UA75CS |2015/11/30 23:54:54 |1 |215CSZ00 |2015/11/30 23:56:17 |2 |21ZCYPUY |20

急急!!SQL数据库中怎么获取每半小时内的第一条数据或者半小时内的平均值?

问题描述 我在数据库中每2分钟存入一条数据,但中间会有中断情况,就是可能半小时内没有数据,也可能有很多条数据,现在想取半小时内的第一条数据或者半小时内的平均值,想问下各位大侠有无好的方法,不想用循环,我的数据量很大,循环很慢.之前用时间条件后加datediff(minute,startime,time)%30=0,只能取到整半小时的数据,而我的数据可能是31分,1分,这样就取不到数据. 解决方案 解决方案二:1.在数据库的操作:做个标识列,取最大值.或者按时间排序,取半小时内的数据.2.在软件里

SQL数据操作基础(中级)6

数据 第十章"SQL基础"向你初步介绍了SQL.你学会了如何用SELECT语句进行查询,你还学会了如何建立自己的表.在这一章里,你将加深你的SQL知识.你将学习如何建立索引来加快查询速度.你还将学会如果用更多的SQL语句和函数来操作表中的数据. 建立索引 假设你想找到本书中的某一个句子.你可以一页一页地逐页搜索,但这会花很多时间.而通过使用本书的索引,你可以很快地找到你要搜索的主题. 表的索引与附在一本书后面的索引非常相似.它可以极大地提高查询的速度.对一个较大的表来说,通过加索引,一

定时任务-sqlserver数据库,按照指定日期将表中对应时间段内的记录备份出去。

问题描述 sqlserver数据库,按照指定日期将表中对应时间段内的记录备份出去. 业务需求: 数据库自2009年起有5年的数据量. 数据库只保存近两年的数据.比如 2012-01-01 ~ 2014-01-01 首先将 2010-01-01 ~ 2012-01-01 的数据保存到大文件夹里[比如 D:2010年及2011年数据],以月份命名各个文件夹[每个文件夹里有当月的所有表,表中有当月的记录] 后将 2010-01-01 ~ 2012-01-01 的数据从数据库中删除 然后每一个月的最后一

把一天分成四个时间段,分别查询这四个时间段的数据

问题描述 把一天分成四个时间段,分别查询这四个时间段的数据 0900-1200 1200-1600 1600-2100 2100-0900 这四个时间段 意思就是相当于一天的开始是9点,然后最后的时间段是晚上9点到第二天早上9点 ,查询的数据都是9点到第二天9点的数据,求大神给点思路 解决方案 LINQ么? var query = db.GroupBy(x.时间字段.Hour); 第一个时段 = query.Where(x => new int[] {9,10,11}.Contains(x.Ke

问个高难度的复杂查询(在一个时间段内的间隔查询)_数据库其它

我想在一个时间段内然后按照间隔时间来查询数据 select * from 监控温度表 where 监控温度表.时间 between '" + Str(dtStart.Value) + "'AND '" + Str(dtEnd.Value) + "'order by id 这个是在一个时间段内查询,现在要加个时间间隔来查询,不知所云,望高手解答 其中dtStart.Value和dtEnd.Value是DTPicker1控件 举例:比如说我查询时间段在 2007-1-5

你真的会玩SQL吗?和平大使 内连接、外连接

你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节点的方法 你真的会玩SQL吗?让人晕头转向的三值逻辑 你真的会玩SQL吗?EXISTS和IN之间的区别 你真的会玩SQL吗?无处不在的子查询 你真的会玩SQL吗?Case也疯狂 你真的会玩SQL吗?表表达式,排名函数 你真的会玩SQL吗?简单的 数据修改 你真的会玩SQL吗?你所不知道的 数据聚合