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