2012-04-27 63 views
0

如何将字符串'Fri,2012年3月9日10:43:21 +0000(UTC)'作为varchar(max)存储到datetime值'09 -03 -2012',这是字符串的日期部分?如何从datetime中提取日期时间作为varchar存储

+0

数据库中的数据类型是什么?它是'日期时间'吗? – dsolimano 2012-04-27 01:56:20

+1

可能重复的[如何仅返回日期部分从SQL Server日期时间数据类型](http://stackoverflow.com/questions/113045/how-to-return-the-date-part-only-from-a- sql-server-datetime-datatype) – dsolimano 2012-04-27 01:58:10

+0

不,该列是varchar(max)。 – 2012-05-02 19:12:28

回答

0

根据MS:http://msdn.microsoft.com/en-us/library/ms187928.aspx

转换()函数是一个数据类型的表达式转换为另一种一般功能。 CONVERT()函数可用于以不同格式显示日期/时间数据。

和表列出105为你想要的风格的代码。

所以,你的例子日期:

CONVERT(VARCHAR(10), 'Fri, 9 Mar 2012 10:43:21 +0000 (UTC)', 105) 

可能应该做的伎俩。

0

我不得不先砍了你的约会,但这里有云:

DECLARE @ds varchar(30)='Fri, 9 Mar 2012 10:43:21 +0000 (UTC)'; 
SELECT CONVERT(VARCHAR(10) 
,CAST(SUBSTRING(@ds 
,CHARINDEX(' ',@ds) 
,LEN(@ds)-(PATINDEX('%[0-9][0-9][0-9][0-9]%',@ds)+6)) 
AS DATETIME) 
,105  
) 

结果:

09-03-2012 
+0

为什么选择投票?这不行吗?如果您有更好的想法,欢迎您在此分享。 – 2012-05-09 12:05:55

0

如果你有SQL Server 2012中,你可以试试这个:

选择Convert(日期,TRY_PARSE( '星期五,2012年3月9日10点43分21秒+0000' AS DATETIME2))

注意:(UTC)已删除,但没有正确解析。

另外,请注意是否需要本地化该时间值。例如,我住在亚利桑那州,所以通常我只是从UTC时间减去-7小时来本地化。您需要根据时区进行类似的调整

相关问题