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

SQL查询年里的天数问题
我一张表如下
 年 天数(日期以天数记)  
2001 1
2001 2
. .
. .
2001 364
2001 365
2002 1
2002 2
. .
. .
2002 364
2002 365
2003 1
2003 2
. .
. .
2003 364
2003 365

如何使用Select * From 某表 WHERE 年份 天数
查询2001年第100天 到2002年 第300天的数据,同时又能查询同一年,比如2002年第20天到第80天的数据.
同时要考虑,不同年内 和 同一年内的情况!

最终在dawugui(爱新觉罗.毓华)和xiaolinyouni(苦苦的潜行者) 的帮助下得到解决:

解决方法如下:
if StartYaer=EndYaer then
//如果年份相等,只在年里选择天
Sql ="select * from "&CZNAMEFILE&" where [年份] = "&EndYaer&" and [天数] between "&StartDayNum&" and "&EndDayNum&""
else
//如果年份不等,只在联合查询天数
Sql ="select * from "&CZNAMEFILE&" where [年份]="&StartYaer&" and [天数]>"&StartDayNum&" union all select * from "&CZNAMEFILE&" where [年份]="&EndYaer&" and [天数]<="&EndDayNum&" union all select * from "&CZNAMEFILE&" where [年份]="&EndYaer&" and [天数]>"&StartDayNum&" and [天数]<="&EndDayNum&""
end if


不知道有那位高手能用一句查询语句表达???

------解决方案--------------------
用时间函数
datediff(dd,原时间,getdate()//当前系统时间),dd为天数
------解决方案--------------------
所谓一句就是用不同的条件组合起来即可.
不知道你是否看懂我们写的语句的意思.
------解决方案--------------------
1.建议你搞懂我们写的语句的意思,自己写.

2.
SQL code

建议你提供详细的资料:
例如表的结构,表之间的关系,测试数据,相关算法及需要的结果。
这样有助于我们理解你的意思,更主要的是能尽快让你获得答案或解决问题的方法。