Obtener fecha en formato español

Pregunta para el experto Eduardo o si alguien más me puede colaborar, no utilizo tablas vinculadas y necesito crear una consulta desde Access al servidor de datos PostgreSQL para así obtener la fecha con el siguiente formato:

LUNES, 21 DE NOVIEMBRE DE 2022

¿Cuál sería la consulta SQL?

2 respuestas

Respuesta
1

La respuesta de Enrique sirve si la tabla está vinculada para hacer una consulta o para llenar datos en un formulario mediante un recordset, no obstante, debe hacerlo llamando una función.

Para datos no vinculados se debe acudir a las funciones de PostgreSQL. Le dejo el script y la salida en PostgreSQL

Explico:

To_char --- Es una función de PostgreSQL para convertir datos en cadena de texto, en este caso la fecha actual

CURRENT_DATE -- Es la fecha actual

TMDAY --Para obtener el nombre del día en español (lo hace TM)

DD -- Corresponde al número del día.

TMMONTH -- Para obtener el nombre del mes en español (lo hace TM)

YYYY -- El año

"DE" -- Es texto no hace parte de PostgreSQL.

Ahora, le dejo este ejemplo como se utilizaría desde Access. Estos son 2 formularios que no están vinculados, el origen de los datos se obtiene directamente del servidor.

Para simplificar le muestro el segundo formulario en diseño.

CÓDIGO DEL FORMULARIO EVENTO AL CARGAR

Private Sub Form_Load()
   On Error GoTo ErrorHandler
   Dim strSQL As String
    strSQL = "SELECT *, TO_CHAR(fecha_nac, 'TMDAY, DD ""DE"" TMMONTH ""DE"" YYYY') AS strfecha" & vbCrLf
    strSQL = strSQL & " FROM tblempleados WHERE idempleado=" & Me.OpenArgs
    Set Me.Recordset = recorset_desc(strSQL)
    Me.Caption = Space(20)
ExitProcedure:
    Err.Clear
    Exit Sub
ErrorHandler:
    Select Case Err.Number
        Case 0
        Case Else
            MsgBox "Error " & Err.Number & " (" & Err.Description & ") en procedimiento " & "Form_Open" & " " & Application.VBE.ActiveCodePane.CodeModule.Name
            Resume ExitProcedure
    End Select
End Sub

Observe como a diferencia del script en PostgreSQL en Access se debe duplicar las comillas en ""DE"", el formulario se llena con un recordset desconectado para disminuir el tráfico al servidor.

Ahora, si la tabla estuviera vinculada al servidor la respuesta de Enrique es la solución, pero debe crear una función y llamarla desde la consulta. Algo como.

DISEÑO DE LA CONSULTA (Tabla vinculada)

RESULTADO DE LA CONSULTA

FUNCIÓN CONVIERTE LA FECHA EN TEXTO

Function str_fecha(mdate As Date) As String
 str_fecha = UCase(Format(mdate, "dddd\, d \d\e mmmm \d\e yyyy"))
End Function

La función evita error al hacer la conversión desde la cuadricula, también se puede hacer la consulta con SQL.

Martha, si tiene alguna duda puede escribirme a [email protected] 

Eduardo, desconocía por completo este uso de la función TO_CHAR() trataré de implementarlo. Gracias por su aporte. Lo estaré molestando en cualquier momento.

Respuesta
1

De cualquier procedencia:

¿

? Date
21/11/2022

?Ucase(Format(Date, "dddd\, d \d\e mmmm \d\e yyyy"))
LUNES, 21 DE NOVIEMBRE DE 2022

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas