Como cambiar el formato de hora doctime en Crystal

Quero cambiar la forma de presentar el campo Doctime para poder convertir la hora de 1701 a 17:01

Hola @ruelasal, prueba crear una formula asi:

TimeValue((round(({Command.U_UDF}/100),0)),({Command.U_UDF} MOD 100),0)

Saludos,

3 Me gusta

Te comento con este código casi me quedo, solo que me genera algunas horas medios como 18:00:95
((case when LEN(convert (varchar,t0.CreateTS,110))=5 then (‘0’+ substring (convert (varchar,T0.CreateTS,110),1,1)) else substring (convert (varchar,T0.CreateTS,110),1,2) end) +’:’+ SUBSTRING(convert(varchar, T0.CreateTS,110),2,2) +’:’+ SUBSTRING(convert(varchar, T0.CreateTS,110),4,2)) as Tiempo

Buen día, no te funciona dándole formato desde el campo, en Fecha y Hora?

En donde quieres darle formato en CRYSTAL REPORT o en tu SCRIPT SQL?

No, ya lo intente pero no cambia, es que esta en formato numerico.

Es en el script de vista de sql para usarlo en un reporte echo por crystal reports

Entonces te seria mas facil formatearlo en crystal report, no crees?

Ya lo e intentado pero no me funciona. es el campo doctime, ese su formato es para las 9 am 900 y despues de las 10 ama 1000, pero no es formato de fecha, es numerico. inclusive ya lo mande a Excel y tampoco pude.

probaste esto que te mencioné?? justo esto toma el campo como numerico, cambia tu campo en vez de U_UDF.

Saludos,

1 me gusta

Hola @ruelasal puedes te colocaré unas horas y por favor dime en cada una de ellas cual es el valor que tiene guardado el campo:
03:00 = ?
12:00 = ?
15:45 = ?
22:00 = ?

Esto para poder entender la lógica de armado de la fórmula en el Crystal.

Saludos.

Te paso como me aparecen.

03:00 = 300
12:00 = 1200
15:45 = 1545
22:00 = 2200

Saludos

La verdad lo probé pero no me funciono o no supe como ponerlo.

Mira yo tengo uno que prácticamente guarda la hora como el campo que me dices, y tengo que hacer la conversión. Espero te sirva , solo cambia el nombre del campo.

select Length (Replace( Replace (ToText ({JC1_DS_Factura.Hora}), '.00', ''), ',', '')) 

case 0 : '00:00:00'

case 1 : '00:0' &  Replace( Replace (ToText ({JC1_DS_Factura.Hora}), '.00', ''), ',', '') & ':00'

case 2 : '00:' & Replace( Replace (ToText ({JC1_DS_Factura.Hora}), '.00', ''), ',', '') & ':00'

case 3 : '0' & Left (Replace( Replace (ToText ({JC1_DS_Factura.Hora}), '.00', ''), ',', ''), 1) & ':' & Right (Replace( Replace (ToText ({JC1_DS_Factura.Hora}), '.00', ''), ',', ''), 2) & ':00'

default: Left (Replace( Replace (ToText ({JC1_DS_Factura.Hora}), '.00', ''), ',', ''), 2) & ':' & Right (Replace( Replace (ToText ({JC1_DS_Factura.Hora}), '.00', ''), ',', ''), 2) & ':00'


Hola @ruelasal, crea un nuevo campo fórmula y coloca esto.

LEFT(“0” & TOTEXT({comando.Hora},0,’’),2) & “:” & RIGHT(TOTEXT({comando.Hora},0,’’),2)

Avísame como te va.

1 me gusta

Creo estar haciendo algo mal, nomas no me funciona, y ya probe con todo lo que me an puesto, algo estoy haciendo mal.
Abajo pongo mi codijo de la consulta y en el doctime si lo haces en sql no da la hora pero en el query manager si.

SELECT T0.DocNum AS Pedido, T0.DocStatus AS Status, T0.DocDate AS Fecha, T0.CardCode AS Cliente, T0.CardName AS Nombre, T0.Max1099 - T0.Max1099 * 4 / 29 AS ‘Total antes de Iva’, T0.SlpCode AS Empleado,
T2.SlpName, T0.OwnerCode, T1.firstName, T0.UserSign, T3.USER_CODE, T0.DocTime AS ‘Hora de Autorizacion’, (CASE WHEN T0.[DocStatus] = ‘O’ THEN (CASE
(SELECT SUM(Quantity - OpenQty)
FROM RDR1
WHERE RDR1.Docentry = T0.Docentry) WHEN 0 THEN ‘Sin Facturar’ ELSE ‘Facturado Parcial’ END) ELSE ‘Facturado’ END) AS Expr1
FROM dbo.ORDR AS T0 INNER JOIN
dbo.OHEM AS T1 ON T0.OwnerCode = T1.empID INNER JOIN
dbo.OSLP AS T2 ON T0.SlpCode = T2.SlpCode INNER JOIN
dbo.OUSR AS T3 ON T0.UserSign = T3.USERID

El que yo te puse es para usar en CRYSTAL REPORT. A mi me funciona de maravilla

En tu consulta utilizas el campo DocTime de la tabla ORDR. Ya ese campo viene en formato de número, no deberías tener mayor problema al mostrarlo en el Crystal.

Hola,

Tal vez le funcione este que tengo, lo que hace es poner los : y agregar el cero a la izquierda en las horas menores a 10, espero te funcione poniendolo directamente en la consulta SQL, yo lo uso mucho.
ej:

SELECT
‘ORDEN DE VENTA’ ‘TIPO DE DOC’,
T0.[DocNum] ‘CONSECUTIVO’,
T0.[DocDate] ‘FECHA’,
CASE
WHEN LEN(T0.[DocTime]) = ‘3’ THEN SUBSTRING (CAST(T0.[DocTime] AS VARCHAR(6)),1,1) + ‘:’ + SUBSTRING (CAST(T0.[DocTime] AS VARCHAR(6)),2,3)
WHEN LEN(T0.[DocTime]) = ‘4’ THEN SUBSTRING (CAST(T0.[DocTime] AS VARCHAR(6)),1,2) + ‘:’ + SUBSTRING (CAST(T0.[DocTime] AS VARCHAR(6)),3,4)
END ‘HORA DE CREACIÓN’
FROM
ORDR T0
WHERE
T0.[DocDate] >=[%0] AND T0.[DocDate] <=[%1]
T1.[ItemCode] NOT LIKE ‘%SERV-LUZ%’

Pura vida!!!

3 Me gusta

Ya lo puse en crystal report y no me cambia la hora.
Esto va en las formulas verdad?