SQL VarChar到日期

时间:2011-01-25 12:11:44

标签: sql date varchar

喜 我正在尝试将VarChar日期字段(例如20100320)转换为实际日期字段,如

  

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

我尝试了两种方法: a)

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

     AS 'Period From',

b)

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

     AS 'Period From',

产生结果如

  

yyyy-mm-dd(例如2010-03-20)

但我希望结果像

  

dd / mm / yyyy(例如20/03/2010)

任何帮助将不胜感激。 感谢。

2 个答案:

答案 0 :(得分:5)

试试这个:

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

您的问题是,一旦您有日期格式,SQL Server将以其默认日期格式将其转储,您发现它是yyyy-mm-dd。您需要将date转换为varchar才能获得所需的格式。但要从日期转换,您需要先转换为日期! 112是yyyymmdd的格式,103是dd/mm/yyyy的格式,因此这就是您需要这些格式的原因。 (Books Online reference for date formats

答案 1 :(得分:1)

Declare @date nvarchar(100)
set @date = '20100320'
select convert(varchar, CONVERT(datetime, @date, 109), 103)

您可以使用

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