SQL Преобразование строки MMM.YY в дату - PullRequest
4 голосов
/ 29 июня 2010

как мне преобразовать / привести столбец, содержащий строки, например, Январь 08, Фев.08 .. в формат даты, чтобы я мог их отсортировать?

Большое спасибо!

Ответы [ 2 ]

7 голосов
/ 29 июня 2010

Я бы просто отформатировал конвертируемую строку для первого соответствующего месяца, а затем привел к datetime, например,

CAST('1.' + YourMonthAndYearColumnName AS DATETIME)

... - это выражение, которое приведет к дате и времени, которые должны бытьсортируемый, поэтому:

SELECT
  YourMonthAndYearColumnName
FROM
  YourTable
ORDER BY
  CAST('1.' + YourMonthAndYearColumnName AS DATETIME)

... должен делать то, что вы ищете.

0 голосов
/ 29 июня 2010

Если вы можете сделать предположение, что все даты будут в течение последних десяти лет, вы можете использовать следующий код:

select convert(datetime, replace('Jan.08', '.', ' 20'))
select convert(datetime, replace('Dec.08', '.', ' 20'))

, который форматирует строку в формат «январь 2008», чтооднозначна.«Dec.08» может быть «8 декабря этого года» или «декабрь 2008 года».

Или вы можете использовать предложение Мэтта Гибсона о добавлении «1».до вашей даты до конвертации.Это устраняет неоднозначность и дает преимущество использования любых значений по умолчанию, которые SQL-сервер использует для дат (т. Е. 50 - это 1950, а 49 - это 2049).

select convert(datetime, '1.' + 'Jan.08')
select convert(datetime, '1.' + 'Dec.49')
select convert(datetime, '1.' + 'Jan.50')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...