¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo solucionar el error de conversión de NVARCHAR a DATE en SQL

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

Al intentar convertir un campo de NVARCHAR a DATE, aparece el siguiente error:

No se pudo ejecutar 'SELECT TO_CHAR(TO_DATE("FECHA", 'MM/DD/YYYY'), 'MM/DD/YYYY') FROM "@A11_HISTO_VTA"' en 30 ms 188 µs . [314]: desbordamiento numérico: error de búsqueda en la tabla: [6944] AttributeEngine: desbordamiento en el cálculo numérico; formato de cadena (daydate [aquí]daydate(string "FECHA", string 'MM/DD/YYYY'), string 'MM/DD/YYYY'),FECHA = '24/11/2017'[cadena]; checkNull false


Utiliza los siguientes comandos SQL para realizar la operación:

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

Muchas gracias por la ayuda lbreddemann

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

Según tus comentarios, el requisito para mí se lee de la siguiente manera:

a partir de una tabla con tres columnas de cadena separadas para DÍA, MES y AÑO, crear una columna de fecha SQL.

Para DÍA y MES, las columnas pueden contener valores de una y dos cifras.

Dado que la función TO_DATE() espera valores de dos dígitos para la conversión (máscaras de formato DD y MM), esos valores deben ser rellenados con ceros cuando son de una sola cifra.

Afortunadamente, SQL viene con la función LPAD() que hace precisamente eso.

Tomando todo en cuenta, el requisito se puede implementar de la siguiente manera:

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

Hi lbreddemann

Sí, utiliza la función TO_DATE , sin embargo, tiene el mismo error mencionado anteriormente, el campo "DATE" tiene el tipo de dato NVARCHAR , la sintaxis SQL que estoy utilizando actualmente es la siguiente:

Pero al usar esta forma, los días menores que el día 10 , no colocan 0 antes del número, por ejemplo, si es día 1 , el resultado en formato de fecha debería 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 convertir una cadena (presumiblemente "FECHA" es una columna de cadena) a una columna de fecha, todo lo que necesitas usar es la función TO_DATE.

Una vez que los datos son de tipo de fecha real, por lo general, el formato se realiza por el programa cliente.

Dicho esto, me pregunto de dónde proviene la columna "FECHA" y cómo se crea. Hasta ahora, nunca he visto errores de "desbordamiento numérico" en el contexto de la conversión de tipos de datos, por lo que debe haber más en esto.

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?