2016-03-08 96 views
3

我想格式化SQL日期时间如下格式自定义日期时间格式 - SQL服务器

2011-04-28 23点53分13秒----->周四4月28日23点53分13秒UTC 2011

不幸格式化功能在我2008年的SQL Server不支持 它说,

“格式化”是无法识别的内置函数名称。

+0

您的数据是否真的包含时区?你想看看那个时区吗?或者UTC是一个假定的常量? –

+0

请参阅http://stackoverflow.com/a/11499496/2224701 –

+1

你想要这样做的任何理由?如:在99%的情况下,您在应用程序中提取日期和格式。 – TomTom

回答

3

请尝试以下代码。我认为UTC为您不断从你的问题描述

SELECT SUBSTRING(DATENAME(DW,GETUTCDATE()),1,3) + ' ' + 
    SUBSTRING(DATENAME(MM,GETUTCDATE()),1,3) +' '+ 
    CAST(DATEPART(DD,GETUTCDATE()) AS VARCHAR(3)) + ' ' 
    +cast(cast(GETUTCDATE() as time(0)) as varchar(20)) + ' UTC '+ 
    DATENAME(YY,GETUTCDATE()) 
+0

我把它作为一个SQL函数,而不是UTCDATE我使用输入的DateTime参数 – KRR

+0

其确定。但是,当在SELECT中拥抱数据时,性能可能会很慢,因为函数每记录基础执行一次。然而,对于较小数量的数据,没有问题。谢谢@KRR –

0

FORMAT是SQL Server的一部分,从2008年2012度的变化,旧版本的SQL Server,使用CONVERT

SELECT(SUBSTRING(DATENAME(DW,GETUTCDATE()),1,3)+ ' ' + CONVERT(VARCHAR(20), GETUTCDATE(), 100)) 

与此唯一的问题是它没有时区。您的数据库日期时间日志是否使用UTC保存(基于良好实践,它应该)?如果是,则可以将字符串'UTC'附加到以下查询。