Проблема в написании кода для преобразования исходных данных в формат дд / мм / гггг - PullRequest
0 голосов
/ 03 марта 2011

Пожалуйста, помогите в написании кода для преобразования исходных данных в формат дд / мм / гггг.

Например:

**column**
02/01/2010
2/01/2010
12/11/2010
14/12/2010
01/1/2009
1/1/2008
12/31/2006

Этот столбец представляет собой комбинацию мм / дд /гггг и дд / мм / гггг.

И мне нужно написать синтаксис в операторе выбора (оператор case), чтобы получить любой формат данных, в котором он должен быть в формате дд / мм / гггг.

1 Ответ

1 голос
/ 03 марта 2011

Нечто подобное будет делать то, что вы хотите. Как только столбец будет в формате даты, вы можете представить его в любом формате. Это не красиво, хотя.

SET DATEFORMAT DMY
SELECT CASE WHEN ISDATE(yourColumn) = 1  THEN CONVERT(DATETIME, yourColumn)
            ELSE CONVERT(DATETIME, SUBSTRING(yourColumn, 
                           CHARINDEX('/', yourColumn, 0)+1, 
                           CHARINDEX('/', yourColumn, CHARINDEX('/', yourColumn, 0)+1) - CHARINDEX('/', yourColumn, 0)) 
                 + STUFF(yourColumn, 
                         CHARINDEX('/', yourColumn, 0), 
                         CHARINDEX('/', yourColumn, CHARINDEX('/', yourColumn, 0)+1) - CHARINDEX('/', yourColumn, 0), '') )
       END
FROM yourTable

Это очень хрупкий код. Если вы не уверены, что дата имеет формат dmy или mdy, весьма вероятно, что вы получите неправильные результаты.

...