SQL Server - Formato fechas en consulta SQL

 
Vista:

Formato fechas en consulta SQL

Publicado por Julian Chan (1 intervención) el 28/05/2016 20:53:36
requiero de su ayuda soy nuevo en sql estoy realizando una consulta en mi base de datos el campo "Dt Cancela" es un CHAR(8) en mi tabla tiene el formato (20160524)no puedo convertilo en formato fecha mm/dd/aaaa este es el codigo que estoy utilizando
Error: [ODBC Engine Interface]Expression evaluation error.

select "Serie" as Serie,"Nr Nota" as Factura, "Cod Entidade" as CodigoCliente, "Razao Social" as NombreCliente,
CONVERT(left("Dt Emissao",4) + '-'+ right(left("Dt Emissao",6),2) + '-' + right ("Dt Emissao",2), SQL_DATE) as fecha1,
CONVERT(left("Dt Cancela",4) + '-'+ right(left("Dt Cancela",6),2) + '-' + right ("Dt Cancela",2), SQL_DATE) as fecha2,
"Cod Cond Pgto" as condicpago, "Cod Oper Fiscal" as OperaFiscal, "Nat Oper Oper" as NatOperacion,
"Sit NF" as situacion, "Tp NF" as TipoFactura, "Tp Doc Mov" as Origendocumento, "Tp Pedido" as Pedido,
"Tp OS" as Orden, "Nr Mov" as Movimiento, "Mtvo Cancela" as Cacelacion, "Dt Cancela" as fechacancelacion,
"Nc Fornec" as notadecredito, "Tp Mov" as tipomovimiento
from "NF Header"
Where YEAR(CONVERT(left("Dt Emissao",4) + '-'+ right(left("Dt Emissao",6),2) + '-' + right ("Dt Emissao",2), SQL_DATE)) =YEAR(CURDATE())
and MONTH(CONVERT(left("Dt Emissao",4) + '-'+ right(left("Dt Emissao",6),2) + '-' + right ("Dt Emissao",2), SQL_DATE)) =MONTH(CURDATE())
and "Serie"<>'I' and "Tp Doc Mov"=3
order by fecha1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.523
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Formato fechas en consulta SQL

Publicado por Isaias (4204 intervenciones) el 30/05/2016 19:49:19
Por principio de cuentas, si es un dato de FECHA deberia estar almacenado en su tipo correspondiente, ¿no crees?

1
2
3
4
5
DECLARE @fechachar char(8) = '20160524'
SELECT CASE WHEN LEFT(@fechachar, 1) LIKE '[0-9]'
            THEN CONVERT(VARCHAR(10), CONVERT(datetime, @fechachar,   1), 101)
            ELSE CONVERT(VARCHAR(10), CONVERT(datetime, @fechachar, 109), 101)
      END created_ts
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar