如何转换/转换列包含字符串,例如1月8日,2月8日..进入日期格式,以便我可以对它们进行排序?
非常感谢!
答案 0 :(得分:7)
我只是在相关月份的第一个时格式化为可转换字符串,然后转换为日期时间,例如
CAST('1.' + YourMonthAndYearColumnName AS DATETIME)
...是一个表达式,它将产生一个应该可排序的日期时间,所以:
SELECT
YourMonthAndYearColumnName
FROM
YourTable
ORDER BY
CAST('1.' + YourMonthAndYearColumnName AS DATETIME)
......应该做你想要的。
答案 1 :(得分:0)
如果您可以假设所有日期都在过去十年内,您可以使用以下代码:
select convert(datetime, replace('Jan.08', '.', ' 20'))
select convert(datetime, replace('Dec.08', '.', ' 20'))
将字符串格式化为“Jan 2008”格式,这是明确的。 “Dec.08”可能是“今年12月8日”或“2008年12月”。
或者你可以使用Matt Gibson建议的前缀“1”。到转换前的日期。这消除了歧义,并且具有使用SQL服务器对日期的任何默认值的优势(即50是1950和49是2049)。
select convert(datetime, '1.' + 'Jan.08')
select convert(datetime, '1.' + 'Dec.49')
select convert(datetime, '1.' + 'Jan.50')