cancel
Showing results for 
Search instead for 
Did you mean: 

Query Formato fecha YYYY MM DD HH MM SS

former_member188716
Participant
0 Kudos

Buenos dias compañeros, tengo la siguiente consulta para convertir dia mes año, a año mes dia, hora minuto segundo

YYYY/MM/DD HH:MI:SS

SELECT T0."DocNum", T0."DocNum", T0."DocDate",T0."DocTime",

CONCAT(
	CONCAT(
		
		TO_DATE( CONCAT(  
   				CAST(
   					extract(
   							YEAR FROM (T0."DocDate")
   							) 
   					AS VARCHAR(10)
   					),     	------
   			CONCAT( '/',--  					   					CONCAT( -----
							CAST(
								extract(
										MONTH FROM (T0."DocDate")						) 
   					AS VARCHAR(10)
								),
   					
   					CONCAT('/', 
							CAST(
								extract(
										DAY FROM (T0."DocDate")
										) 
   					AS VARCHAR(10)
								)
							)--
							)
					)
					)
				
				
				, 'YYYY/MM/DD')
				, ' ' ------------------------------**********
			),
			   
CAST(
CONCAT(
CASE WHEN LENGTH (T0."DocTime")=4 THEN  SUBSTRING ( T0."DocTime", 1,2)
WHEN LENGTH (T0."DocTime")=3 THEN  SUBSTRING ( T0."DocTime", 1,1) 
ELSE T0."DocTime" 
END, 




CONCAT(
CONCAT( ':',
CASE WHEN LENGTH (T0."DocTime")=4 THEN  SUBSTRING ( T0."DocTime", 3,4)
WHEN LENGTH (T0."DocTime")=3 THEN  SUBSTRING ( T0."DocTime", 2,4)  
ELSE T0."DocTime"
END
), ':00'))
AS TIME)
)AS "FECHA 2"

FROM OINV T0 
WHERE T0."DocDate" BETWEEN '2018-01-01' AND '2018-01-30'

La pregunta es si conocen una forma de hacer esto mas corto, ya que tuve muchos problemas en las conversiones TO_TIME y TO_DATE cuando el dato original del doctime y el docdate no tenia cumplía condiciones...

Espero me puedan ayudar

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Muy Bien , lo acabo de ejecutar de esta manera , revisa si te sirve y si es mas sencilla . por cierto en tu consulta los segundos siempre son 00 , en la que te pongo de ejemplo los segundos salen de la tabla OINV.


SELECT "DocNum", "DocNum", "DocDate", "DocTime",
--Obtenemos el Año
(
TO_VARCHAR(YEAR ("DocDate")) || '/' ||
--Obtenemos el Mes
CASE WHEN MONTH("DocDate") < 10 THEN '0' ELSE '' END ||
TO_VARCHAR(MONTH ("DocDate")) || '/' ||
--Obtenemos el Dia 
CASE WHEN DAYOFMONTH("DocDate") < 10 THEN '0' ELSE '' END || 
TO_VARCHAR(DAYOFMONTH ("DocDate")) || ' ' ||  
--Obtenemos la Hora
TO_VARCHAR(HOUR(TO_TIME("CreateTS"))) || ':' ||
--Obtenemos los Minutos
CASE WHEN MINUTE(TO_TIME("CreateTS")) < 10 THEN '0' ELSE '' END ||
TO_VARCHAR(MINUTE(TO_TIME("CreateTS"))) || ':' || 
--Obtenemos los Segundos
CASE WHEN SECOND(TO_TIME("CreateTS")) < 10 THEN '0' ELSE '' END ||
TO_VARCHAR(SECOND(TO_TIME("CreateTS")))
) AS "YYYY/MM/DD HH:MI:SS"
FROM OINV

Obtuve el siguiente Resultado

Espero te funcione !

former_member188716
Participant

Buenos dias leonardo, estuve haciendo pruebas con tu Query pero cuando la hora es menor a 10, no funciona tu query.

También hay posibilidades donde la hora es :00:23:32 cero horas, 23 minutos, 32 segundos. Te comento para que lo solucionemos juntos xD

Answers (2)

Answers (2)

agustin_marcoscividanes
Active Contributor
0 Kudos

Hola

mira este documento acerca de FORMAT.

Un saludo

Agustín

former_member188716
Participant
0 Kudos

Buenos dias Agustin, intente algunas sentencias, pero Hana no las reconoce >.<

Former Member
0 Kudos

Hola , que version de SAP B1 Utilizas ? y la consulta donde la utilizaras ? Formato de Crystal?
Pregunto esto para darte la mejor opción , si existe maneras mas sencillas de llegar al resultado que necesitas

former_member188716
Participant
0 Kudos

Buenas tardes Leonardo.

La version es Sap Business One for Hana.

No es un formato de crystal, es para una vista.