日期:2014-05-17  浏览次数:20449 次

关于sql—2个日期拼装数据问题?

use master
go
create database test
go
use  test
go
if exists(select 1 from sys.objects where name='tDateTime' and type='U')
drop table tDateTime
go
create table tDateTime --表名
(
    id int identity  primary key,
    Title nvarchar(50),
    StartTime datetime,
    EndTime  datetime
)
insert into tDateTime values('aaa','2012-08-08 00:00:00.000','2013-01-26 00:00:00.000')
insert into tDateTime values('bbb','2012-10-17 00:00:00.000','2012-10-24 00:00:00.000')
insert into tDateTime values('ccc','2012-10-17 00:00:00.000','2012-10-24 00:00:00.000')
insert into tDateTime values('ddd','2012-10-31 00:00:00.000','2012-11-07 00:00:00.000')
insert into tDateTime values('ddd','2012-09-01 00:00:00.000','2012-12-09 00:00:00.000')
insert into tDateTime values('ccc','2012-12-05 00:00:00.000','2012-12-20 00:00:00.000')
insert into tDateTime values('bbb','2012-09-03 00:00:00.000','2013-05-12 00:00:00.000')
select * from tDateTime
go

查询语句

select id,Title,StartTime,EndTime,
                        CONVERT(VARCHAR(4),StartTime,23) yearStart,
                        CONVERT(VARCHAR(4),EndTime,23) yearEnd,
                        CONVERT(VARCHAR(2),StartTime,10) monthStart,
                        CONVERT(VARCHAR(2),EndTime,10) monthEnd,
                        CONVERT(VARCHAR(2),StartTime,5) dayStart,
                        CONVERT(VARCHAR(2),EndTime,5) dayEnd,
                        datepart(dd,dateadd(mm,1,convert(char(8),CONVERT(datetime,'2012-12-01',120),21)+'01')-1) as Diff --当月天数
                        from tDateTime  where 1=1 and '2012-12' between CONVERT(VARCHAR(7),StartTime,23) and CONVERT(VARCHAR(7),EndTime,23) 
--其中'2012-12-01'和'2012-12'为同一个参数。(日期控件显示的年和月)


我现在拼装数据,有点蒙!
功能类似bolg发表文章日历,日历显示的年月份 为查询sql的参数 如:'2012-12-01'和'2012-12'
我现在要在日历控件上高亮显示(可上一月或下一年等) 符合StartTime,EndTime,两个字段的日期。
共有日期组装数据格式为:[2, 10, 11, 16, 15, 20] (蒙到这里了!)
并组合共有日期合集,Title的集合,也就是2条数据或N条数据都有日期2,
那么新列Title=两条数据和 如:Title="aaa"+","+"ccc"(sql不好实现,我逻辑可以自己实现)

用SQL,这个语句好复杂,用asp.net这个逻辑判断我都写蒙了. . .求大神帮忙!

------最佳解决方案--------------------
没看明白,友情帮顶
高手指點!謝謝!该怎么处理