sql 如何取日期中的年月

左手青春右手年华 2016-03-01 10:51:02
year(time)+'-'+month(time) 虽然可以实现,但是无法按此拼接的时间格式进行正常升降序排列
select (cast(year(time)+'-'+month(time) as datetime)) as d,sum(num) as c from table group by d,c order by d desc
错误:(1)不能在聚合查询用别名字段;(2)这种将yyyy-mm的字符串转化成时间格式报错
请高手指点
...全文
3357 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
当然不能group by 是分组,没分好数据代表还没有你的别名数据,所以用不了,而在order by 就可以用前面的别名了

SELECT CONVERT(VARCHAR(7),time,23) AS d,SUM(num) AS c FROM table GROUP BY CONVERT(VARCHAR(7),time,23)
ORDER BY d DESC 
秋的红果实 2016-03-01
  • 打赏
  • 举报
回复
等你把d转为有效的时间格式,排序就可以这样:order by convert(datetime,d) DESC,这样就让最新数据排到了上面,达到你要的效果
秋的红果实 2016-03-01
  • 打赏
  • 举报
回复
年-月,也能转换为日期类型?你需要加上日,才能转
allen0118 2016-03-01
  • 打赏
  • 举报
回复
select convert(nvarchar(6),getdate(),112)
Dogfish 2016-03-01
  • 打赏
  • 举报
回复
楼主order by的时候可以用order by year(time), month(time) 效果一样的。
江南小鱼 2016-03-01
  • 打赏
  • 举报
回复
select cast(year(time)+'-'+month(time) as datetime) as d,sum(num) as c from table group by cast(year(time)+'-'+month(time) as datetime) order by cast(year(time)+'-'+month(time) as datetime) desc

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧