`
少女杀手
  • 浏览: 131642 次
  • 性别: Icon_minigender_1
  • 来自: 约旦河西岸
社区版块
存档分类
最新评论

sql按日期范围汇总数据

    博客分类:
  • SQL
阅读更多
昨天想到的按日期统计数据,后来在自己电脑上看以前当的资料时,找到解决办法了,确实很实用。说白了,就是
只想得到日期或时间的一部分,而不是完整的日期和时间。然后在统计。

用到的数据库和表(MS SqlServer数据库)
use master
go

if exists(select * from sysdatabases where name='Spending')
drop database Spending

create database Spending
on
(
name='Spending_data',
filename='D:\Spending_data.mdf',
size=3 mb,
filegrowth=10%
)
log on
(
name='Spending_log',
filename='D:\Spending_log.ldf',
size=3 mb,
filegrowth=10%
)
go


use Spending
go

if exists(select * from sysobjects where name='consumption')
drop table consumption
go
create table consumption
(
  cid int primary key identity(1,1),
  cdate datetime not null,
  cmoney money not null
)
go


insert into consumption values('20090624',23)
insert into consumption values('20090625',56)
insert into consumption values('20090625',42)
insert into consumption values('20090626',45)
insert into consumption values('20090627',12)
insert into consumption values('20090628',32)
insert into consumption values('20090629',36)
insert into consumption values('20090701',16)

select * from consumption

比如我想统计每天的数据和(25号时候有两条记录)用下面语句,只统计6月份每一天的数据和(如果年份多,再加上限制条件)

select DATEPART(dd,cdate) as '号', sum(cmoney) from consumption  where datepart(mm,cdate)=6  group by DATEPART(dd,cdate)
显示结果
24    23.00
25    98.00
26    45.00
、、、

统计一周的如下

select DATEPART(wk,cdate) as '周', sum(cmoney) from consumption group by DATEPART(wk,cdate)
显示结果
26    178.00
27     84.00

统计月的如下

select datepart(mm,cdate) as '月份',sum(cmoney) from consumption where datepart(yy,cdate)=2009 group by datepart(mm,cdate)

显示结果
6    246.00
7     16.00

以上用到的就是“DATEPART()”函数。函数DATEPART()的参数是两个变量。第一个变量指定要抽取日期的哪一部分;第二个变量是实际的数据。

日期的各部分及其简写
日期部分           简写               值
year                yy                1753--9999
quarter             qq                1--4
month               mm                1--12
day of year         dy                1--366
day                 dd                1--31
week                wk                1--53
weekday             dw                1--7(Sunday--Saturday)
hour                hh                0--23
minute              mi                0--59
second              ss                0--59
milisecond          ms                0--999




再有就是我们数据库某字段设计为 datetime类型后,插入数据后,自动将毫秒数都显示出来了
例如我上面插入的是 20090624,可是在查出来就变成2009-06-24 00:00:00.000,这样在页面
显示肯定有问题,这种情况可以用CONVERT()函数

CONVERT(data_type,expression,[style])

此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)
相互转换的时候才用到.

语句及查询结果:
SELECT CONVERT(varchar(100), cdate, 0):24 06 2009 21:57PM
SELECT CONVERT(varchar(100), cdate, 1): 06/24/09
SELECT CONVERT(varchar(100), cdate, 2): 09.06.24
SELECT CONVERT(varchar(100), cdate, 3): 24/06/09
SELECT CONVERT(varchar(100), cdate, 4): 24.06.09
SELECT CONVERT(varchar(100), cdate, 5): 24-06-09
SELECT CONVERT(varchar(100), cdate, 6): 24 06 09
SELECT CONVERT(varchar(100), cdate, 7): 06 24, 09
SELECT CONVERT(varchar(100), cdate,: 10:57:46
SELECT CONVERT(varchar(100), cdate, 9): 06 24 2009 21:57:46:827AM
SELECT CONVERT(varchar(100), cdate, 10): 06-24-09
SELECT CONVERT(varchar(100), cdate, 11): 09/06/24
SELECT CONVERT(varchar(100), cdate, 12): 090624
SELECT CONVERT(varchar(100), cdate, 13): 24 06 2009 21:57:46:937
SELECT CONVERT(varchar(100), cdate, 14): 10:57:46:967
SELECT CONVERT(varchar(100), cdate, 20): 2009-06-24 21:57:47
SELECT CONVERT(varchar(100), cdate, 21): 2009-06-24 21:57:47.157
SELECT CONVERT(varchar(100), cdate, 22): 06/24/09 21:57:47 PM
SELECT CONVERT(varchar(100), cdate, 23): 2009-06-24
SELECT CONVERT(varchar(100), cdate, 24): 10:57:47
SELECT CONVERT(varchar(100), cdate, 25): 2009-06-24 21:57:47.250
SELECT CONVERT(varchar(100), cdate, 100): 06 24 2009 21:57PM
SELECT CONVERT(varchar(100), cdate, 101): 06/24/2009
SELECT CONVERT(varchar(100), cdate, 102): 2009.06.24
SELECT CONVERT(varchar(100), cdate, 103): 24/06/2009
SELECT CONVERT(varchar(100), cdate, 104): 24.06.2009
SELECT CONVERT(varchar(100), cdate, 105): 24-06-2009
SELECT CONVERT(varchar(100), cdate, 106): 24 06 2009
SELECT CONVERT(varchar(100), cdate, 107): 06 24, 2009
SELECT CONVERT(varchar(100), cdate, 108): 10:57:49
SELECT CONVERT(varchar(100), cdate, 109): 06 24 2009 21:57:49:437PM
SELECT CONVERT(varchar(100), cdate, 110): 06-24-2009
SELECT CONVERT(varchar(100), cdate, 111): 2009/06/24
SELECT CONVERT(varchar(100), cdate, 112): 20090624
SELECT CONVERT(varchar(100), cdate, 113): 24 06 2009 21:57:49:513
SELECT CONVERT(varchar(100), cdate, 114): 10:57:49:547
SELECT CONVERT(varchar(100), cdate, 120): 2009-06-24 21:57:49

分享到:
评论

相关推荐

    数据分析面试题-SQL面试题汇总.docx

    本文档汇总了两道数据分析面试题,涵盖了 SQL 编程语言的多个方面,包括建表、插入数据、排序、连接、分组、聚合函数、日期操作等。通过这两道题目,我们可以了解数据分析师需要具备的 SQL 编程基础知识和数据分析...

    SQLSERVER时间函数汇总

    通过阅读“SQLSERVER时间函数汇总”这篇博客,你将更深入地了解如何利用这些函数来处理日期和时间数据,从而提升你的SQL编程技能。博客中可能还会涵盖一些实际示例和最佳实践,帮助你更好地理解和应用这些函数。

    Oracle sql查询当前月的所有日期

    通过上述SQL语句,我们可以轻松地获取当前月份的所有日期,这对于需要按月份进行数据分析的场景非常实用。同时,本文还介绍了几个Oracle SQL中处理日期的重要函数和技巧,希望对你有所帮助。在实际应用中,根据具体...

    SQL按照日、周、月、年统计数据的方法分享

    在SQL中,统计数据是一项常见的任务,特别是在业务分析和报告生成中。这里我们将详细探讨如何按照日、周、月、季度和年来统计销售额或其他指标,以SQL语句为例。 首先,我们来看如何按照日来统计销售额。假设我们有...

    SQL知识点汇总【完整版】

    SQL知识点汇总【完整版】 本节课将对 SQL 的基础知识进行一个全面详细的总结,包括 SQL 语言分类、SQL SERVER 2008 数据分类、用户定义的数据类型等重要知识点。 SQL 语言分类 SQL 语言可以分为三类:DDL、DML 和...

    mysql中获取一天、一周、一月时间数据的各种sql语句写法

    这篇内容主要探讨了如何使用SQL语句获取一天、一周、一月内的数据。首先,我们创建了一个名为`t`的表,包含`id`和`addTime`两个字段,`addTime`字段存储的是日期时间类型,默认值为'0000-00-00 00:00:00'。然后,...

    常用sql语句汇总

    这篇文档“常用sql语句汇总”将涵盖多个与SQL相关的主题,包括处理死锁、BCP数据导入导出、动态生成日期维度以及如何断开并更改数据库名称等关键知识点。 首先,我们来探讨死锁。死锁是数据库系统中常见的问题,...

    sql 语言汇总!Sql Server语言 大全!!!

    ### SQL Server语言大全:...综上所述,SQL Server提供了丰富的功能和配置选项,通过合理设置内存选项、管理数据库文件结构、调整系统数据库属性以及深入理解日期类型,可以显著提升SQL Server数据库的性能和管理效率。

    世界各洲、国、省(州)中英文sql数据

    描述中的“全世界各洲、国、省(州)中英文sql数据”进一步强调了数据覆盖的地域范围,即全球,并且数据包括中文和英文两种语言。这意味着数据库不仅适用于中文环境,也能适应英文环境,提供了多语言的便利性,这对于...

    SQL语句常用汇总

    SELECT COUNT(*) FROM 数据表 WHERE 字段名1 BETWEEN #日期1# AND #日期2#; ``` 3. **范围查询**: 使用`BETWEEN`关键字可以在指定范围内查询记录,例如: ```sql SELECT * FROM 数据表 WHERE 字段名 BETWEEN ...

    SQL自学教程资料汇总

    2. 分组与聚合函数:GROUP BY 用于按一个或多个列对数据进行分组,聚合函数如COUNT、SUM、AVG、MIN、MAX可计算分组后的统计信息。 3. 排序:ORDER BY 用于对查询结果进行升序(ASC)或降序(DESC)排序。 4. 子...

    SQL联合统计查询

    在统计查询中,这可以用来按特定日期范围(如一天、一周或一个月)筛选数据。 二、联合查询的语法 基本的UNION语法如下: ```sql SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2; ```...

    库存收发存报表汇总统计数据库语句实现

    这种实现方式确保了数据的实时性,只需一条SQL语句即可完成库存收发存的汇总统计,提高了查询效率,简化了业务逻辑。 总结来说,这个库存收发存报表汇总统计的数据库语句实现展示了如何利用SQL的联接、窗口函数以及...

    sql函數,week周數,返回日期

    在实际应用中,这样的功能非常实用,尤其是在处理按周进行数据汇总或分析时。接下来,我们将详细解析这个函数的实现逻辑及其应用场景。 ### SQL 函数 `WeekToDay` 的实现逻辑 #### 1. **函数定义与参数** - **...

    SQL Server数据汇总五招轻松搞定

    在SQL Server中,数据汇总是数据分析的关键步骤,它可以帮助我们从海量数据中提取出关键信息。GROUP BY子句是SQL中用于实现数据分组和汇总的核心工具。在本篇文章中,我们将深入探讨如何利用GROUP BY子句进行有效的...

    SQL基础知识汇总(1)

    4. **数据类型**:理解SQL Server中的数据类型是至关重要的,比如INT(整数)、VARCHAR(可变长度字符串)、DATE(日期)、DATETIME(日期时间)等。正确选择数据类型能确保数据的准确性和存储效率。 5. **索引**:...

    sqlserver快速入门指南汇总

    本文将基于"sqlserver快速入门指南汇总"这一主题,结合提供的文件资源,深入探讨SQL Server的基础知识,以及它与Oracle数据库的对比。 首先,让我们关注"数据库系统(SQLserver)学习PPT.rar"。这个文件很可能是...

    经典SQL脚本大全

    │ │ 5.2.2 使用编号表按日期生成流水号的示例.sql │ │ 5.2.2 使用编号表生成流水号的示例.sql │ │ 5.2.3 生成纯字母随机编号的示例(仅大小或者小写).sql │ │ 5.2.3 生成纯字母随机编号的示例(大小写混合)....

Global site tag (gtag.js) - Google Analytics