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())



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.


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.