【发布时间】:2018-10-26 21:00:39
【问题描述】:
我在表格中有一列“Date_Sold”,格式为“Mon DD YYYY” 我需要以“Mon YYYY”或“YYYY Mon”的格式从“Date Sold”中提取月份和年份
例如“2018 年 2 月”或“2018 年 2 月”, 我知道如何使用
来分割它们“从表中选择 (left(Date_Sold, 3) + ' ' + Right(Date_Sold,4))”
或“从表中选择(Right(Date_Sold,4) + ' ' + left(Date_Sold, 3))”,
但问题是,它不能以这种格式按实际日期排序,它要么按顺序
“2018 年 4 月”->“2018 年 8 月”->“2018 年 2 月”, 或订购“2018 年 4 月”->“2017 年 12 月”,
我也试过用
"Select Convert(varchar(12), year([Date_Sold])) + ' ' + Convert(varchar(12), Month([Date_Sold])) from Table"
将年份和月份显示为“2018 10”格式, 但它也有问题
2018 年 10 月 “2018 10” 将早于 2018 年 2 月 “2018 年 2”
是否可以使用SQL来显示和排序“年月”或“年月”的真实日期?
【问题讨论】:
-
为什么要将日期存储为字符串?
-
对于工作需求,我需要以实际日期的“Mon Year”或“Year Mon”作为一个维度来显示历史趋势
-
不要这样做,哦不要这样做!如您所见,您让一切变得更加困难。
-
1.更改
Convert(varchar(12), Month([Date_Sold]))=>right('0'+Convert(varchar(12), Month([Date_Sold])),2) -
2.
select convert(nvarchar(6),[Date_Sold],112)
标签: sql sql-server sorting date sql-order-by