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