SQL VarChar на сегодняшний день - PullRequest
3 голосов
/ 25 января 2011

привет я пытаюсь преобразовать поле даты VarChar (например, 20100320) в поле реальной даты, например

'dd/mm/yyyy' (e.g. 20/03/2010).

Я пробовал два способа: а)

 (SELECT    MIN(CAST(A.DateOfAction AS Date)) AS Expr1
           FROM      ResAdm.Action A
           WHERE    (A.PersonID = P.PersonID)) 

     AS 'Period From',

б)

(SELECT    MIN(CONVERT(DATE, A.DateOfAction, 103)) AS Expr1
           FROM      ResAdm.Action A
           WHERE    (A.PersonID = P.PersonID)) 

     AS 'Period From',

оба дают результат как

гггг-мм-дд (например, 2010-03-20)

но я хочу получить результат как

дд / мм / гггг (например, 20.03.2010)

любая помощь будет оценена. спасибо.

Ответы [ 2 ]

5 голосов
/ 25 января 2011

Попробуйте это:

select convert(varchar(8), convert(datetime, min(a.DateOfAction), 112), 103)

Ваша проблема в том, что, получив формат даты, SQL Server выгрузит его в формате даты по умолчанию, который вы обнаружили yyyy-mm-dd.Вам нужно конвертировать из date в varchar, чтобы получить нужный формат.Но чтобы конвертировать из даты, вам нужно сначала конвертировать в дату!112 - это формат для yyyymmdd, а 103 - для dd/mm/yyyy, поэтому вам нужны эти форматы.( Книги Онлайн-справочник по форматам даты )

1 голос
/ 25 января 2011
Declare @date nvarchar(100)
set @date = '20100320'
select convert(varchar, CONVERT(datetime, @date, 109), 103)

Вы можете использовать

convert(varchar, CONVERT(datetime, A.DateOfAction, 109), 103)
...