2016-03-08 79 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'附加到以下查詢。