O SQL Server tem uma função Date_Format?

8

Tudo o que encontrei é uma lista de opções predefinidas DateFormatque posso escolher, como esta

Como me lembro no MySQL (e no PostgeSQL também?), Você pode definir seu formato de data:

DATE_FORMAT(now(),'&m_%Y') --for 02_2012 etc.

O SQL Server tem a mesma coisa? Vejo que as pessoas precisam escrever uma função para fazer isso, ela tem uma embutida?


EDITAR:

Acabei de encontrar a DatePartfunção. Pode levar Mês como número, mas sempre retorna 1 dígito, até eu uso datePart(MM, getdate())

King Chan
fonte
Possível duplicata de stackoverflow.com/questions/8202257/…
GSerg 02/02
11
Normalmente, a formatação deve ser tratada pelo cliente, não pelo banco de dados. Dito isto, se você deve formatar a saída do banco de dados, Martin Smith já forneceu opções.
JSR

Respostas:

16

Ainda não.

Você precisa usar CONVERTcom um parâmetro de estilo ou cortar algo junto com DATEPARTou DATENAME.

O SQL Server 2012 terá a FORMATfunção que aceita uma string de formato do .NET Framework

Sintaxe:

FORMAT ( value, format [, culture ] )

Exemplo de uso

SELECT FORMAT(getdate(), 'dd/MM/yyyy', 'en-US' ) 

Você sempre pode usar a integração do CLR e criar sua própria UDF que faz a mesma coisa para 2005 ou 2008.

Martin Smith
fonte
Ahhh, 2012! Bem, acho que vou escrever uma UDF como você disse. Obrigado
King Chan
Isso será demais.
Gordon Bell
11
@KingChan e Martin: em relação ao uso do SQLCLR para fazer isso no SQL Server 2005/2008/2008 R2, sempre há a opção de baixar a versão gratuita do SQL # (da qual sou autor, mas Date_Format é gratuito) e então não há necessidade de fazer nenhuma codificação. Eu tenho alguns exemplos de ambos SQL#.Date_Formate o interno FORMATdesta resposta do SO: Existe uma maneira de obter datas com formatos personalizados no SQL Server? :-)
Solomon Rutzky
0

Se seu objetivo é simplesmente saída formatada e não precisa permanecer no tipo de dados datetime, usar CONVERT com um código de formato é uma excelente ferramenta. Uma lista de formatos e seus respectivos códigos pode ser encontrada aqui: http://msdn.microsoft.com/en-us/library/ms187928.aspx

hqrsie
fonte