SQL将字符串MMM.YY转换为日期

时间:2010-06-29 08:34:50

标签: sql sql-server string date

如何转换/转换列包含字符串,例如1月8日,2月8日..进入日期格式,以便我可以对它们进行排序?

非常感谢!

2 个答案:

答案 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')