sql怎么把一年中的每周数都显示出来
2个回答
展开全部
LZ给的红包实在少点。回头给补上呀!
----------------------------
这个题的难度不再怎么显示周,而是中国的文化问题,中国把周一当第一天,而中国用的大多数数据库都是国外的,国外基本都是把周日当第一天,所以按周统计或排序的基本都有误差,很多函数也用不了。
使用的是SqlServer数据库,别的数据库也会有以上问题,LZ自己多思考,方法如下:
(datepart(week, [CreateDate] + @@DateFirst - 1)-1) 才是真正的在中国能用的一年中的第几周。记住这是一年中的,不能跨年份,跨年份要用where 过滤年份。
第一:排序输出
SELECT [CreateDate], (datepart(week, [CreateDate] + @@DateFirst - 1)-1)
FROM [ST_Inventory]
order by (datepart(week, [CreateDate] + @@DateFirst - 1)-1)
第二:分组输出
SELECT MAX([CreateDate]), (datepart(week, [CreateDate] + @@DateFirst - 1)-1)
FROM [ST_Inventory]
group by (datepart(week, [CreateDate] + @@DateFirst - 1)-1)
----------------------------
这个题的难度不再怎么显示周,而是中国的文化问题,中国把周一当第一天,而中国用的大多数数据库都是国外的,国外基本都是把周日当第一天,所以按周统计或排序的基本都有误差,很多函数也用不了。
使用的是SqlServer数据库,别的数据库也会有以上问题,LZ自己多思考,方法如下:
(datepart(week, [CreateDate] + @@DateFirst - 1)-1) 才是真正的在中国能用的一年中的第几周。记住这是一年中的,不能跨年份,跨年份要用where 过滤年份。
第一:排序输出
SELECT [CreateDate], (datepart(week, [CreateDate] + @@DateFirst - 1)-1)
FROM [ST_Inventory]
order by (datepart(week, [CreateDate] + @@DateFirst - 1)-1)
第二:分组输出
SELECT MAX([CreateDate]), (datepart(week, [CreateDate] + @@DateFirst - 1)-1)
FROM [ST_Inventory]
group by (datepart(week, [CreateDate] + @@DateFirst - 1)-1)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询