[sql server] 得到连续日期查询

本文介绍如何在SQL Server中生成连续日期,用于数据查询和分析。通过创建临时表并利用spt_values生成指定范围内的日期,然后结合实际例子展示如何根据连续日期查询财务数据,如收入、支出和余额。
摘要由CSDN通过智能技术生成

得到连续日期需要借助一个有连续序号的表,参考如何得到连续序号

 

--〉生成连续日期的方法
IF OBJECT_ID('tempdb..#t') IS NOT NULL  DROP TABLE #t
GO
create table #t(id int identity,Dt varchar(10))
go
declare  @starttime datetime,@endtime datetime
set @starttime = '2010-5-01'
set @endtime ='2010-5-31'


insert #t
select convert(varchar(10),dateadd(day,number,@starttime),120) dt
from master..spt_values
where type='P' and number between 0 and datediff(day,@starttime,@endtime)
--结果
select * from #t

/*
id          Dt
----------- ----------
1           2010-05-01
2           2010-05-02
3           2010-05-03
4           2010-05-04
5           2010-05-05
6           2010-05-06
7           2010-05-07
8           2010-05-08
9           2010-05-09
10          2010-05-10
11          2010-05-11
12          2010-05-12
13          2010-05-13
14          2010-05-14
15          2010-05-15
16          2010-05-16
17          2010-05-17
18          2010-05-18
19          2010-05-19
20          2010-05-20
21          2010-05-21
22          2010-05-22
23          2010-05-23
24          2010-05-24
25          2010-05-25
26          2010-05-26
27          2010-05-27
28          2010-05-28
29          2010-05-29
30          2010-05-30
31          2010-05-31

(31 行受影响)
*/

 

实际例子:

原帖:

http://topic.csdn.net/u/20100619/18/3b4d60f2-b477-414f-adec-569ccee3fec6.html

http://topic.csdn.net/u/20100619/15/367ed306-b8ea-4b2b-9614-2acd64c0e07e.html


根据开始时间,结束时间 生成连续的时间
然后在用这个连续的时间去比较表里的数据

 

 

if object_id('TZ_Money')is not null drop table TZ_Money go
create table TZ_Money
(
    Id
int identity(1,1) primary key,  
    Uid
varchar(8) not null,            --用户ID
    Income numeric(10,2) not null,        --收入
    Expenditure numeric(10,2) not null,           --支出
    Balance numeric(10,2) not null,        --余额
    [Time] datetime not null,            --日期(天为单位)
    LastTime datetime  null            --最后时间
)
go
set identity_insert TZ_Money on
insert TZ_Money (id,uid,Income,Expenditure,Balance,Time)
select 1 ,'abc1', 1.00 ,5.00 ,96 ,'2010-06-7 12:12:12' union

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值