Cómo cambiar el formato de hora en consulta access?

Necesito cambiarle el formato hora de los registros de mi base de datos, por ejemplo:

Si la hora registrada en mi tabla es 4:00PM, en la consulta se cambie por 4PM.

Lo he resuelto utilizando la siguiente:

hora_Informe: Format([hora_fin];"hAM/PM")

Por otro lado tengo registros con el siguiente formato: 04:15PM y lo resolví utilizando lo siguiente:

hora_Informe: Format([hora_fin];"h:nnAM/PM")

El problema que tengo, es que no se como hacer una expresión que me valide los dos formatos y se muestre lo que necesito en la misma columna de mi consulta Access.

  • Si es 4:00PM se muestre 4PM
  • Si es 04:15PM se muestre 4:15PM
Respuesta
2

Mucho más sencillo, y que te servirá para cualquier hora, no solo para las horas que tienen un dígito: crea el campo en tu consulta con esta expresión:

hora_Informe: SiInm(Format([Hora_fin];"nn")="00";Format([hora_fin];"hAM/PM");Format([hora_fin];"h:nnAM/PM"))

Cuando la ejecutes:

Que es lo que buscas.

A la respuesta de Julián le veo tres inconvenientes:

1º/ NO deberías modificar los datos originales si solo quieres cambiar el formato para mostrarlo en un informe.

2º/ Si tu campo hora_fin es un campo de tipo fecha/hora (lo correcto y normal), al ejecutar la consulta de actualización te dará un error, porque no puedes guardar un texto en un campo hora.

3º/ Aún suponiendo que tu campo sea de tipo texto, si tienes como hora_fin cualquier hora con dos dígitos (10,11,12,21,22,23) y con minutos distintos de 0, por ejemplo 21:30, el resultado que te dará esa expresión será: 1:30, y claramente no es el valor que buscas (y al haber modificado los datos, tu registro pierde toda exactitud).

1 respuesta más de otro experto

Respuesta
2

¿Seguro que el formato del campo es fecha/hora? Parece que sea texto.

Te respondo a las dos horas que has puesto, habría que ver más, pero...

Si tengo la tabla

Construyo la consulta de actualización

Con lo que la cuando la ejecuto, la primera hora

Para la segunda, le cambio los criterios a la misma consulta

Le pongo >4 para que no "toque" los registros que ya estén como la primera. Al ejecutarla

No me había fijado en la letra en negrita. Desde el momento en que usas Format lo has convertido en texto.

Si lo quieres en código, desde un botón o cualquier otro evento lo puedes poner como

Private Sub Comando56_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "update tabla1 set hora=replace([hora],"":00"","""")"
DoCmd.RunSQL "update tabla1 set hora=right([hora],len([hora])-1) where len([hora])>4"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas