cancel
Showing results for 
Search instead for 
Did you mean: 

Formato de tiempo de la forma hh:mm:ss

Former Member
0 Kudos

Buen día expertos!

Quero cambiar la forma de presentar el campo CreateTS para poder convertir la hora de 170117 a 17:01:17.

Yo tenía un query, que según yo lo hacía, pero lo estoy ejecutando desde el query manager y algo nada mal.

Alguien tiene un query que haga eso, que me lo pueda compartir, o ayudarme a saber que puede estar mal en el que tengo?


SELECT ((case when LEN(convert (varchar,t0.DocTime,110))=3 then ('0'+ substring (convert (varchar,T0.DocTime,110),1,1))

else substring (convert (varchar,T0.DocTime,110),1,2) end) +':'+

(case when LEN(convert (varchar,T0.DocTime,110))=3 then ('0'+ substring (convert (varchar,T0.DocTime,110),3,2))

else substring (convert (varchar,T0.DocTime,110),3,2) end) +(SUBSTRING(convert(varchar, T0.CreateTS,110),5,2))) as Tiempo

FROM OINV T0

Saludos y de antemano, Gracias!

Accepted Solutions (1)

Accepted Solutions (1)

agustin_marcoscividanes
Active Contributor
0 Kudos

Hola

prueba esta query:

SELECT t0.DocTime, T0.CreateTS, ((case when LEN(convert (varchar,t0.CreateTS,110))=3

then ('0'+ substring (convert (varchar,T0.CreateTS,110),1,1)) 

else substring (convert (varchar,T0.CreateTS,110),1,2) end) +':'+ 

(case when LEN(convert (varchar,T0.CreateTS,110))=3

then ('0'+ substring (convert (varchar,T0.CreateTS,110),3,2)) 

else substring (convert (varchar,T0.CreateTS,110),3,2) end) +':'+

(SUBSTRING(convert(varchar, T0.CreateTS,110),5,2))) as Tiempo  FROM OINV T0

Un saludo

Agustín Marcos Cividanes

Former Member
0 Kudos

Que tal Agustin!

Muchas gracias por tu respuesta.

Ese que me mandaste funcion muy bien, de las 10:00:00 a las 12:59:59

Es decir cuando el campo CreateTS tiene 6 digitos.

Pero a partir de la 1:00:00 y hasta las 9:59:59 ya no funciona, porque tiene 5 digitos ejemplo:

9:59:59 esta apareciendo así --> 95:95:9

Saludos!

agustin_marcoscividanes
Active Contributor
0 Kudos

Hola

prueba esta query:

SELECT t0.DocTime, T0.CreateTS, ((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  FROM OINV T0

Sobraba el CASE en el procesamiento de los minutos. Te dejo los dos campos por delante para que compruebes.

Un saludo

Agustín Marcos Cividanes

Former Member
0 Kudos

Ese funciona a la perfección

Muchas gracias!

Answers (2)

Answers (2)

jhader20
Discoverer
0 Kudos

UN FAVOR ALGUIN ME PODRIA AYUDAR CON ESTO

EL PROBLEMA ES CUANDO LA HORA ESTA ENTRE EL RANGO DE 08:00 HASTA LAS 09:59 SALE MAL

PERO A PARTIR DE LAS 10 SALE NORMAL

AGRADECERIA MUCHO SI ME PUEDEN AYUDAR

former_member27
Community Manager
Community Manager
0 Kudos

Hola Nando Cotrina,

La versión en inglés está debajo

Gracias por visitar SAP Community para obtener respuestas a sus

preguntas. Como es la primera vez que hace una pregunta aquí, tenga en cuenta que:

Está agregando un comentario a una publicación anterior que probablemente no obtendrá una respuesta.

Sugiero comenzar una nueva pregunta y seguir estas pautas:

Le recomiendo que se familiarice con: https://community.sap.com/resources/questions-and-answers, ya que brinda sugerencias para preparar preguntas que obtienen respuestas de nuestros miembros.

Por ejemplo, puedes:

- describa qué pasos tomó para encontrar respuestas (y por qué no fueron útiles)

- comparte capturas de pantalla de lo que has visto/hecho

- asegúrese de haber aplicado las etiquetas adecuadas

Cuantos más detalles proporcione, más probable es que los miembros puedan responder. Siéntase libre de tomar también nuestro tutorial de preguntas y respuestas en: https://developers.sap.com/tutorials/community-qa.html

Si lo desea, puede revisar su pregunta seleccionando Acciones y luego Editar.

Si está interesado en conectarse con miembros de la comunidad, visite nuestro nuevo hilo Rincón de bienvenida con consejos de nuestros campeones. Deberá registrarse, ¡pero es una excelente manera de interactuar con sus compañeros y conocer a otros expertos!

https://groups.community.sap.com/t5/welcome-corner-discussions/advice-from-sap-champions-questions-a...

Al agregar una imagen a su perfil, anima a los lectores a responder: https://developers.sap.com/tutorials/community-profile.html

Saludos,

dedi

Hi Nando Cotrina,

Thank you for visiting SAP Community to get answers to your

questions. Since you're asking a question here for the first time please note that:

You are adding a comment to an old post that is not likely to get an answer.

I suggest starting a new question and following these guidelines:

I recommend that you familiarize yourself with: https://community.sap.com/resources/questions-and-answers, as it provides tips for preparing questions that draw responses from our members.

For example, you can:

- outline what steps you took to find answers (and why they weren't helpful)

- share screenshots of what you've seen/done

- make sure you've applied the appropriate tags

The more details you provide, the more likely it is that members will be able to respond. Feel free to also take our Q&A tutorial at: https://developers.sap.com/tutorials/community-qa.html

Should you wish, you can revise your question by selecting Actions, then Edit.

if you're interested in connecting with community members, please pay a visit to our new Welcome Corner thread with advice from our champions. You'll need to sign up, but it's a great way to interact with peers and get to know other experts!

https://groups.community.sap.com/t5/welcome-corner-discussions/advice-from-sap-champions-questions-a...

By adding a picture to your profile you encourage readers to respond: https://developers.sap.com/tutorials/community-profile.html

Regards,

Dedi

Former Member
0 Kudos

Mira yo uso esta conversión en los informes de Crystal Reports.

CONVERT (VARCHAR(10), GETDATE(), 103) AS 'Fecha',

Seguramente no te sea de ayuda pero es lo que yo usé en su día y me fue muy bien.

Con el código 103, se puede conseguir, Adjunto tabla (Extraida de Microsoft). Si no se puede hacer esto, disculpar.

Espero que sea de ayuda.

Sin el siglo (aa) (1)

Con el siglo (aaaa)

Estándar

Entrada/salida (3)

-

  0 o 100 (1,2)

Predeterminado

mes dd aaaa hh:mia.m. (o p.m.)

1

101

EE. UU.

1 = mm/dd/aa

101 = mm/dd/aaaa

2

102

ANSI

2 = aa.mm.dd

102 = aaaa.mm.dd

3

103

Británico/Francés

3 = dd/mm/aa

103 = dd/mm/aaaa

4

104

Alemán

4 = dd.mm.aa

104 = dd.mm.aaaa

5

105

Italiano

5 = dd-mm-aa

105 = dd-mm-aaaa

6

  106 (1) 

-

6 = dd mes aa

106 = dd mes aaaa

7

  107 (1) 

-

7 = Mes dd, aa

107 = Mes dd, aaaa

8

108

-

hh:mi:ss

-

  9 ó 109 (1,2)

Valor predeterminado + milisegundos

mes dd aaaa hh:mi:ss:mmma.m. (o p.m.)

10

110

EE. UU.

10 = mm-dd-aa

110 = mm-dd-aaaa

11

111

JAPÓN

11 = aa/mm/dd

111 = aaaa/mm/dd

12

112

ISO

12 = aammdd

112 = aaaammdd

-

  13 o 113 (1,2)

Europeo predeterminado + milisegundos

dd mes aaaa hh:mi:ss:mmm(24h)

14

114

-

hh:mi:ss:mmm(24h)

-

  20 ó 120 (2)

ODBC canónico

aaaa-mm-dd hh:mi:ss(24h)

-

  21 ó 121 (2)

ODBC canónico (con milisegundos)

aaaa-mm-dd hh:mi:ss.mmm(24h)

-

  126 (4)

ISO8601

aaaa-mm-ddThh:mi:ss.mmm (sin espacios)

Nota Nota

Cuando el valor para milisegundos (mmm) es 0, no se muestra el valor de milisegundos. Por ejemplo, el valor '2012-11-07T18:26:20.000' se muestra como '2012-11-07T18:26:20'.

-

  127(6, 7)

ISO8601 con zona horaria Z.

aaaa-mm-ddThh:mi:ss.mmmZ (sin espacios)

Nota Nota

Cuando el valor para milisegundos (mmm) es 0, no se muestra el valor de milisegundos. Por ejemplo, el valor '2012-11-07T18:26:20.000' se muestra como '2012-11-07T18:26:20'.

-

  130 (1,2)

Hijri (5)

dd mes aaaa hh:mi:ss:mmma.m.

En este estilo, mes es una representación Unicode Hijri multitoken del nombre completo del mes. Este valor no se representará correctamente en una instalación estadounidense predeterminada de SSMS.

-

  131 (2)

Hijri (5)

dd/mm/aaaa hh:mi:ss:mmma.m.

Former Member
0 Kudos

Hola Isaac!

Gracias por tu atención, aunque no es lo que necesito actualmente, lo voy a tener guardado por si luego lo uso.

Por cierto, ese te te pone la hora, de el momento en que pides el formato? porque veo que usas getdate, que no es la fecha del documento segun yo

Former Member
0 Kudos

El GetDate( ) creo que devuelve la marca de tiempo del sistema de base de datos actual como un valor datetime sin el ajuste de zona horaria de la base de datos. Este valor se deriva del sistema operativo del equipo donde la instancia de SQL Server se está ejecutando.


Extraído de Microsoft.


Ya digo que no soy ningún experto, pero en todo lo que pueda echaré una mano.