1
resposta

Não entendi o 120 em CONVERT

Pq o professor colocou 120 para fazer a conversão para VARCHAR?

SELECT NF.CPF, SUBSTRING(CONVERT(VARCHAR, NF.[DATA], 120),1,7) AS ANO_MES
, INF.QUANTIDADE  FROM [NOTAS FISCAIS] NF
INNER JOIN [ITENS NOTAS FISCAIS] INF
ON NF.NUMERO = INF.NUMERO
1 resposta

Opa, tudo bem?

O "120" foi escolhido para definir o estilo da conversão, por conta dos requisitos da função CONVERT.

Para entender melhor, é bom entender a função, cuja sintaxe é assim:

CONVERT(*Tipo_de_resultado*, *Qual_o_dado*, *Estilo_do_resultado*)

Dessa sintaxe, o que está em itálico representa:

• Tipo_de_resultado: "qual o formato final?". No caso do vídeo, foi VARCHAR; • Qual_o_dado: "qual informação estará sendo convertida?". No caso do vídeo, foi a "NF.DATA"; • Estilo_do_resultado: "como será apresentado o resultado, qual seu estilo?". No caso do vídeo, foi escolhido o tipo 120.

O estilo 120 permite converter a data sem perder o formato, por isso foi escolhido. Tem outras opções de estilo, que estão melhor descritas no ]site da Microsoft](https://docs.microsoft.com/pt-br/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15). Descrevo algumas opções abaixo.

Estilo 0 | SELECT CONVERT(VARCHAR, GETDATE(), 0) Antes: 2021-05-01 00:02:29.567 Depois: Mai 1 2021 12:02AM

Estilo 101 | SELECT CONVERT(VARCHAR, GETDATE(), 101) Antes: 2021-05-01 00:02:29.567 Depois: 05/01/2021

Estilo 103 | SELECT CONVERT(VARCHAR, GETDATE(), 103) Antes: 2021-05-01 00:02:29.567 Depois: 01/05/2021

Estilo 23 | SELECT CONVERT(VARCHAR, GETDATE(), 23) Antes: 2021-05-01 00:02:29.567 Depois: 2021-05-01

Tem várias possibilidades de estilo, como mostrado acima. O site de referência da MS pode dar mais exemplos na tabela que tem lá. :P