¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como resolver o erro de conversão de NVARCHAR para DATE no SQL

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 5 Vistas
0
Cargando...

Ao tentar converter um campo de NVARCHAR para DATE, o seguinte erro ocorre:

Não foi possível executar 'SELECT TO_CHAR(TO_DATE("FECHA", 'MM/DD/YYYY'), 'MM/DD/YYYY') FROM "@A11_HISTO_VTA"' em 30 ms 188 µs . [314]: estouro numérico: erro de pesquisa na tabela: [6944] AttributeEngine: estouro no cálculo numérico; formato de string (daydate [aqui]daydate(string "FECHA", string 'MM/DD/YYYY'), string 'MM/DD/YYYY'),FECHA = '24/11/2017'[string]; checkNull false


Utilize os seguintes comandos SQL para realizar a operação:

- SELECT TO_CHAR(TO_DATE("FECHA", 'MM/DD/YYYY'), 'MM/DD/YYYY') FROM "@A11_HISTO_VTA"
- SELECT TO_DATE ("FECHA",'MM/DD/YYYY') FROM "@A11_HISTO_VTA"
- SELECT TO_VARCHAR(TO_DATE(FECHA, 'YYYYMMDD'), 'YYYY-MM-DD') FROM "@A11_HISTO_VTA"

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Muito obrigado pela ajuda lbreddemann

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Segundo seus comentários, o requisito para mim é lido da seguinte forma:

a partir de uma tabela com três colunas de string separadas para DIA, MÊS e ANO, criar uma coluna de data SQL.

Para DIA e MÊS, as colunas podem conter valores de uma e duas cifras.

Dado que a função TO_DATE() espera valores de dois dígitos para a conversão (máscaras de formato DD e MM), esses valores devem ser preenchidos com zeros quando são de uma única cifra.

Felizmente, o SQL vem com a função LPAD() que faz exatamente isso.

Levando tudo em consideração, o requisito pode ser implementado da seguinte forma:

with  data as ( select 
                        '1' as day
                     , '03' as month
                     , '2017' as year
                from dummy
                union all
                select 
                       '12' as day
                     ,  '1' as month
                     , '2018' as year
                from dummy),
data_form as (select  
	        lpad(day, 2, '0') as day, 
	        lpad(month, 2, '0') as month,
		year
              from data)
select 
    *
   , to_date(day||month||year, 'DDMMYYYY') as SQLDATE
from 
     data_form			  
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá lbreddemann

SIM, utilize a função TO_DATE , no entanto, está apresentando o mesmo erro mencionado anteriormente, o campo "DATE" tem o tipo de dado NVARCHAR , a sintaxe SQL que estou utilizando atualmente é a seguinte:

Mas ao usar esta forma, os dias menores que o dia 10 , não colocam 0 antes do número, por exemplo, se for dia 1 , o resultado em formato de data deveria ser 01


SELECT TO_DATE(ANHO||'-'||MES||'-'|| CASE WHEN DIA<10 THEN '0'||DIA ELSE DIA END,'YYYY-MM-DD') FROM "@A11_HISTO_VTA"
captura.png
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Para converter uma cadeia (presumivelmente "FECHA" é uma coluna de cadeia) em uma coluna de data, tudo que você precisa usar é a função TO_DATE.

Uma vez que os dados são do tipo de data real, geralmente, o formato é realizado pelo programa cliente.

Dito isto, fico me perguntando de onde vem a coluna "FECHA" e como ela é criada. Até agora, nunca vi erros de "estouro numérico" no contexto da conversão de tipos de dados, então deve haver mais nisso.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?