Um guia abrangente para a função Formato SQL

Um guia abrangente para a função Formato SQL

SQL Format Date using Culture
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Este artigo explica o uso da função Formato SQL e a comparação de desempenho com o SQL CONVERT.

Introdução

No artigo Funções e formatos da data de conversão do SQL, discutimos o uso da função SQL CONVERT para converter data e hora em vários formatos. Temos uma nova função, SQL FORMAT, do SQL Server 2012.

Usamos essa nova função para obter saída em um formato e cultura especificados. Retorna um tipo de dados NVARCHAR na saída.

Sintaxe da função SQL FORMAT

FORMAT (valor, formato [, culture])

Possui os seguintes parâmetros:

  • Valor: É o valor para fazer a formatação. Deve ser compatível com o formato do tipo de dados. Você pode consultar a documentação da Microsoft para obter uma lista dos tipos de dados suportados e seus tipos de dados equivalentes.
  • Formato: É o formato necessário no qual exigimos a saída. Este parâmetro deve conter uma cadeia de caracteres de formato .NET válida no tipo de dados NVARCHAR. Podemos consultar tipos de formato no .NET para obter mais detalhes
  • Cultura: É um parâmetro opcional. Por padrão, o SQL Server usa o idioma da sessão atual para uma cultura padrão. Podemos fornecer uma cultura específica aqui, mas a estrutura .Net deve suportá-la. Recebemos uma mensagem de erro em caso de cultura inválida

Usamos a seguinte função SQL CONVERT para obter saída em [MM/DD/YYYY] formato:

Função SQL CONVERT

Como sabemos, exigimos código de formato na função SQL Convert para converter a saída em um formato específico.

Não exigimos código de formato na função SQL FORMAT. Vejamos vários exemplos da função FORMAT:

Formato String e descrição

Inquerir

Resultado

d – Mostra o dia do mês de 1 a 31.

d - Mostra o dia do mês de 1 a 31.

D – Ele fornece uma saída detalhada no formato Dia da semana, Mês, Data, Ano.

D - Fornece uma saída detalhada no formato Dia da semana, Mês, Data, Ano.

f- Ele também adiciona o registro de data e hora na saída do parâmetro D. Não inclui informações de segundos.

f- Adiciona também o registro de data e hora na saída do parâmetro D.não inclui informações de segundos.

F- Ele adiciona informações de segundos (ss) também na saída gerada a partir de f parâmetro.

F- Adiciona informações de segundos (ss) também na saída gerada a partir do parâmetro f.

g: – Dá saída em MM / DD / AAAA hh: mm AM / PM.

g: - Dá saída em MM / DD / AAAA hh: mm AM / PM

G: Formato de saída MM / DD / AAAA hh: mm: ss AM / PM.

G: Formato de saída MM / DD / AAAA hh: mm: ss AM / PM

Milímetros: Formato de saída-

Data do mês

M / m: Formato de saída - data do mês

O – Formato de saída

aaaa-mm-ddThh: mm: ss.nnnnnnn

O - Formato de saída aaaa-mm-ddThh: mm: ss.nnnnnnn

R – Formato de saída Dia, dd Seg. Aaaa hh: mm: ss GMT

R - Formato de saída Dia, dd Seg. Aaaa hh: mm: ss GMT

S: Formato de saída aaaa-mm-ddThh: mm: ss

S: Formato de saída aaaa-mm-ddThh: mm: ss

VOCÊ : Formato de saída aaaa-mm-dd hh: mm: ssz

U: Formato de saída aaaa-mm-dd hh: mm: ssz

VOCÊ : Formato de saída Dia, Seg -dd, aaaa hh: mm: ss AM / PM

U: Formato de saída Dia, Seg -dd, aaaa hh: mm: ss AM / PM

T: Formato de saída hh: mm: ss AM / PM

T: Formato de saída hh: mm: ss AM / PM

t: Formato de saída hhLmm AM / PM

t: Formato de saída hhLmm AM / PM

Y: Formato de saída

Seg aaaa

Y: formato de saída Seg aaaa

Formato de saída – MM / dd / aa

Formato de saída - MM / dd / aa

Formato de saída – MMdd / aaaa

Formato de saída - MMdd / aaaa

Formato de saída -yy.MM.dd

Formato de saída -yy.MM.dd

Formato de saída aaaa.MM.dd

Formato de saída 0Aaa.MM.dd

Formato de saída -dd / MM / aa

Formato de saída -dd / MM / aa

Formato de saída -dd / MM / aa

Formato de saída -dd / MM / aa

Formato de saída –

dd-MM-aaaa

Formato de saída - dd-MM-aaaa

Formato de saída –

dd MMM aa

Formato de saída - dd MMM aa

Formato de saída –

dd MMM aaaa

Formato de saída - dd MMM aaaa

Formato de saída –

MMM dd aaaa

Formato de saída - MMM dd aaaa

Formato de saída –

HH: mm: ss

Formato de saída - HH: mm: ss

Formato de saída –

MMM d aaaa h: mm: ss

Formato de saída - MMM d aaaa h: mm: ss

Formato de saída –

Dd MMM aaaa HH: mm: ss

Dd MMM aaaa HH: mm: ss

Formato de saída –

aaaa-MM-dd HH: mm: ss

aaaa-MM-dd HH: mm: ss

Formato de saída –

MM / dd / aa h: mm: ss tt

Formato de saída - MM / dd / aa h: mm: ss tt

Formato de saída –

aa-M-d

Formato de saída - aa-M-d

Formato de saída –

M-d-aaaa

Formato de saída - M-d-aaaa

Formato de saída –

d-M-aaaa

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Formato de saída - d-M-aaaa

Formato de saída –

d-M-aa

Formato de saída - d-M-aa

Formato de saída –

aaaa / M / d

Formato de saída - aaaa / M / d

Formato de saída –

MM.dd.aaaa

Formato de saída - MM.dd.aaaa

Formato de saída –

Dd MMMM, aaaa

Formato de saída - Dd MMMM, aaaa

Data do formato SQL usando cultura

Na seção anterior, não usamos o argumento de cultura. Como você sabe, é um argumento opcional. Vamos ver qual a diferença que faz se o especificarmos em uma consulta.

Na consulta abaixo, vemos o formato da data usando o argumento d para diferentes culturas. Você pode consultar a tabela para códigos de cultura.

Data do formato SQL usando cultura

Da mesma forma, se alterarmos o formato de d para f na consulta acima, ele fornecerá a seguinte saída:

saída da consulta

Moeda de formato SQL usando cultura

Também podemos formatar moeda usando esta função. Suponha que você gerencie um portal de compras on-line onde clientes de um país diferente vêm fazer compras. Você deseja exibir os preços do produto na moeda deles. Na consulta a seguir, usamos a função FORMAT para mostrar preços com um símbolo de moeda:

Moeda usando cultura

Formato numérico usando a função FORMAT

Formato numérico usando a função FORMAT

Escapando dois pontos e períodos na função SQL FORMAT

Devemos evitar dois pontos e pontos nessa função, e ela também está aderindo às regras do .NET CLR. Podemos usar dois pontos e ponto como o segundo parâmetro, e o primeiro parâmetro deve ser uma barra invertida. No exemplo a seguir, vejamos que a segunda instrução de formato ignora os dois pontos no tempo especificado:

Escapando dois pontos e períodos

Comparação de desempenho da função SQL FORMAT e SQL CONVERT

Exploramos os casos de uso da função FORMAT. Você pode pensar que devemos parar de usar a função SQL CONVERT e começar a usar o SQL FORMAT. Esperar! Vamos fazer uma comparação do SQL FORMAT e do SQL CONVERT.

Para comparação de desempenho, crie uma tabela e insira dados nela:

Agora, execute as seguintes consultas SQL:

  • Consulta1: Selecione todos os registros da coluna Ordem de teste de desempenho por ID:

  • Consulta 2: Selecione todos os registros da ordem TestPerfomance pela coluna ID e use a função convert para a coluna InputTime:

  • Consulta 3: Selecione todos os registros da ordem TestPerfomance pela coluna ID e use a função convert para a coluna InputTime:

  • Consulta4: Selecione todos os registros da ordem TestPerfomance pela coluna ID e use a função FORMAT para a coluna InputTime:

Podemos usar DMV sys.dm_exec_query_stats e sys.dm_exec_sql_text para obter os dados de comparação de desempenho das instruções select executadas acima.

Obtemos a seguinte saída do DMV:

Comparação de desempenho

Para entender melhor, vamos visualizar esses dados em um gráfico:

Gráfico de comparação de desempenho

Veja o gráfico da consulta 2, 3 e 4.

  • Temos um tempo alto decorrido para a consulta que usa a função SQL FORMAT

  • As consultas que usam a função CONVERT têm melhor desempenho comparado à função FORMAT

  • Também vemos total_clr_time para a consulta com a função FORMAT, enquanto é zero para consultas da função CONVERT, porque a função de formato usa o tempo de execução do .Net CLR

Conclusão

A função SQL FORMAT é útil para converter datas, hora, número e moeda em um formato especificado. Devemos usá-lo quando exigirmos alterações com reconhecimento de localidade, pois isso pode causar problemas de desempenho. Devemos usar a função SQL CONVERT para todos os outros casos. Se você planeja usá-lo na produção, eu recomendaria fazer um teste de desempenho completo para sua carga de trabalho.

Rajendra Gupta
Últimas mensagens de Rajendra Gupta (ver todos)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Leia Também  Coisas a considerar quando o SQL Server solicita um índice