none
¿Cómo puedo guardar en el código que muestro la fecha y la hora actual? RRS feed

  • Pregunta

  • ------------------------

    sqlComando = New SqlCommand("UPDATE Datos SET Actualizacion = @Hora", sqlConexion)
    sqlComando.Parameters.AddWithValue("@Hora", Now.Date)

    --------------------------

    - La columna Actualizacion es de tipo DateTime.

    - Con Now.Date intento guardar la fecha y la hora exacta actual en la columna Actualizacion, pero veo en la tabla que se guarda así: 2016-08-20 00:00:00.000

    Como ven solo se está guardando la fecha actual pero no la hora.

    ¿Qué uso en lugar de Now.Date para que se guarde la fecha y hora actual?


    • Editado James-2016 sábado, 20 de agosto de 2016 18:50
    sábado, 20 de agosto de 2016 18:50

Respuestas

  • James-2016,

    Puedes hacer uso de la propiedad Now para obtener fecha y hora del equipo actual:

    sqlComando.Parameters.AddWithValue("@Hora", DateTime.Now)

    Sin embargo, considera que es la fecha y hora del equipo donde se ejecuta la aplicación, el mismo que podría no estar correctamente sincronizado con la fecha y tiempo real, te recomiendo que tomes la fecha y tiempo del servidor:

    sqlComando = New SqlCommand("UPDATE Datos SET Actualizacion = GETDATE()", sqlConexion)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta James-2016 sábado, 20 de agosto de 2016 19:30
    sábado, 20 de agosto de 2016 18:57
  • Hola James-2016,

    Usa el Datetime.

    sqlComando.Parameters.AddWithValue("@Hora", DateTime.Now)

    Dónde guardará :

    20/08/2016 13:58:39

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta James-2016 sábado, 20 de agosto de 2016 19:25
    sábado, 20 de agosto de 2016 18:58
  • Gracias, la segunda me supongo que tarde un poco más si el código se ejecuta en el equipo cliente puesto que obtiene la fecha del servidor ¿es eso correcto?

    El mismo tiempo que ocuparías en capturar la hora del equipo es el tiempo que ocupas en capturar la hora del servidor de datos, no se penaliza el rendimiento, muy por el contrario aseguras que la fecha y hora capturada se basa en un dato real. Considera -en caso no existan restricciones en el equipo- que el usuario podría cambiar la fecha y hora a su voluntad, lo que no es correcto.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta James-2016 sábado, 20 de agosto de 2016 19:30
    sábado, 20 de agosto de 2016 19:10
  • Gracias, la segunda me supongo que tarde un poco más si el código se ejecuta en el equipo cliente puesto que obtiene la fecha del servidor ¿es eso correcto?

    OJO, no es que primero se recupera la fecha y hora del servidor y luego se ejecuta la operación de actualización -al parecer temes que haya doble petición-, el comando ejecuta la operación de actualización y como parte de la operación se captura la fecha y tiempo que es asignada a la columna [Actualizacion]


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta James-2016 sábado, 20 de agosto de 2016 19:30
    sábado, 20 de agosto de 2016 19:13
  • Exacto, la fecha y tiempo es capturado en el momento en que la operación de actualización es ejecutado en el servidor. Caso distinto es que primero recuperes la fecha y tiempo y luego ejecutes la actualización:

    Dim cmd As New SqlCommand(SELECT GETDATE(), cn)
    
    'Recupero fecha y tiempo del servidor
    Dim Fecha As DateTime = Convert.ToDateTime(cmd.ExecuteScalar())
    
    cmd.CommandText = "UPDATE T SET Col = @Fecha"
    'Paso como valor del parámetro @Fecha el valor de la variable Fecha
    cmd.Parameters.AddWithValue("Fecha", Fecha)
    
    cmd.ExecuteNonQuery()

    Es evidente que en el ejemplo anterior se accede al servidor dos veces, innecesario claro.



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Editado Willams Morales sábado, 20 de agosto de 2016 19:40
    • Marcado como respuesta James-2016 sábado, 20 de agosto de 2016 20:13
    sábado, 20 de agosto de 2016 19:38

Todas las respuestas

  • James-2016,

    Puedes hacer uso de la propiedad Now para obtener fecha y hora del equipo actual:

    sqlComando.Parameters.AddWithValue("@Hora", DateTime.Now)

    Sin embargo, considera que es la fecha y hora del equipo donde se ejecuta la aplicación, el mismo que podría no estar correctamente sincronizado con la fecha y tiempo real, te recomiendo que tomes la fecha y tiempo del servidor:

    sqlComando = New SqlCommand("UPDATE Datos SET Actualizacion = GETDATE()", sqlConexion)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta James-2016 sábado, 20 de agosto de 2016 19:30
    sábado, 20 de agosto de 2016 18:57
  • Hola James-2016,

    Usa el Datetime.

    sqlComando.Parameters.AddWithValue("@Hora", DateTime.Now)

    Dónde guardará :

    20/08/2016 13:58:39

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta James-2016 sábado, 20 de agosto de 2016 19:25
    sábado, 20 de agosto de 2016 18:58
  • Gracias, la segunda me supongo que tarde un poco más si el código se ejecuta en el equipo cliente puesto que obtiene la fecha del servidor ¿es eso correcto?
    sábado, 20 de agosto de 2016 19:04
  • Gracias, la segunda me supongo que tarde un poco más si el código se ejecuta en el equipo cliente puesto que obtiene la fecha del servidor ¿es eso correcto?

    El mismo tiempo que ocuparías en capturar la hora del equipo es el tiempo que ocupas en capturar la hora del servidor de datos, no se penaliza el rendimiento, muy por el contrario aseguras que la fecha y hora capturada se basa en un dato real. Considera -en caso no existan restricciones en el equipo- que el usuario podría cambiar la fecha y hora a su voluntad, lo que no es correcto.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta James-2016 sábado, 20 de agosto de 2016 19:30
    sábado, 20 de agosto de 2016 19:10
  • Gracias, la segunda me supongo que tarde un poco más si el código se ejecuta en el equipo cliente puesto que obtiene la fecha del servidor ¿es eso correcto?

    OJO, no es que primero se recupera la fecha y hora del servidor y luego se ejecuta la operación de actualización -al parecer temes que haya doble petición-, el comando ejecuta la operación de actualización y como parte de la operación se captura la fecha y tiempo que es asignada a la columna [Actualizacion]


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta James-2016 sábado, 20 de agosto de 2016 19:30
    sábado, 20 de agosto de 2016 19:13
  • ah ya, a ver si te entendí, como se realiza una operación de actualización necesariamente tiene que acceder al servidor y por tanto el tiempo para obtener la hora con Getdate() casi resulta lo mismo que DateTime.Now con la ventaja que esta hora resulta más fidedigna.

    ...y además se ejecuta en una sola línea.

    • Editado James-2016 sábado, 20 de agosto de 2016 19:29
    sábado, 20 de agosto de 2016 19:29
  • Exacto, la fecha y tiempo es capturado en el momento en que la operación de actualización es ejecutado en el servidor. Caso distinto es que primero recuperes la fecha y tiempo y luego ejecutes la actualización:

    Dim cmd As New SqlCommand(SELECT GETDATE(), cn)
    
    'Recupero fecha y tiempo del servidor
    Dim Fecha As DateTime = Convert.ToDateTime(cmd.ExecuteScalar())
    
    cmd.CommandText = "UPDATE T SET Col = @Fecha"
    'Paso como valor del parámetro @Fecha el valor de la variable Fecha
    cmd.Parameters.AddWithValue("Fecha", Fecha)
    
    cmd.ExecuteNonQuery()

    Es evidente que en el ejemplo anterior se accede al servidor dos veces, innecesario claro.



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Editado Willams Morales sábado, 20 de agosto de 2016 19:40
    • Marcado como respuesta James-2016 sábado, 20 de agosto de 2016 20:13
    sábado, 20 de agosto de 2016 19:38
  • ok, gracias.
    sábado, 20 de agosto de 2016 20:13