2016-03-08 3 views
3

Я хочу форматировать SQL время даты в следующем форматеПользовательские даты и времени форматирования - сервер SQL

2011-04-28 23:53:13 -----> Чт апр 28 23:53:13 UTC 2011

, к сожалению, функция FORMAT не поддерживается в моем 2008 SQL Server он говорит, что

'FORMAT' не является признанным встроенным именем функции.

+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

Его Ok. Но когда hug данные присутствуют в SELECT, производительность может быть медленной, потому что функция выполняется на основе записи. Однако для меньшего объема данных проблем нет. Спасибо @KRR –

0

FORMAT является частью SQL Server 2012 изменения по сравнению с 2008, для более старых версий SQL Server, используйте CONVERT:

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

Единственная проблема с этим что он не имеет часовой пояс. Являются ли ваши базы данных datetime logs сохраненными с UTC (на основе хороших практик, он должен)? Если да, то вы можете добавить строку «UTC» к следующему запросу.

Смежные вопросы