Muchas gracias por la ayuda lbreddemann
Avalados por :
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"
Muchas gracias por la ayuda lbreddemann
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
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
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.
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute