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

Formato fechas en consulta SQL

Publicado por Isaias (3182 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