none
Guardar campo de tipo Datetime de Sql Server 2008 desde VB.NET 2010

    Question

  • Hola Señores como dice el titulo, me podrian ejemplificar la mejor manera de guardar en un campo de SQL Server 2008 de tipo Datetime, guadar la fecha y hora del equipo, que no de errores de tipo, la hora si es posible en formato am/pm. Gracias ;-)
    Friday, June 29, 2012 2:30 AM

Answers

  • claro por medio de un texbox y un timer muestro la fecha y hora

    porque no usas un control DateTimePicker

    pero a la hora de almacenar no es necesario que coja los valores del texbox, si hiciera mi campo hora

    yo diria que lo guardes en un solo campo y luego puede tomar cada parte

    imaginemos cargar un datatable y recuperas la row que quieres mostrar

    Dim fecha As DateTime = Convert.ToDatetime(row("campofecha"))

    txtFecha.Text = fecha.ToString("dd/MM/yyyy")

    txthora.Text = fecha.ToString("hh:mm:ss")

    como veras puede tomar cada parte para mostrarla

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Friday, June 29, 2012 12:38 PM

All replies

  • Hola Amigo:

    Para poder almacenar una campo fecha primero que nada El campo en tu BD debe de ser del tipo Datetime, ahora me surge a mi una duda si realmente necesitas guardar la Fecha y Hora?, ya que es muy comun que despues  se requiere hacer consultas por medio de la fecha y sera muy complicado que logres hacer consultas si no mandas explicitamente el valor de Fecha y hora tal cual como esta almacenado en tu BD, considerando Horas, Minutos y segundos.

     Si solo quieres guardar el la fecha entonces tu Campo debe de ser del tipo Date; Analiza el siguiente ejemplo:

    Try
     Dim cnx As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Ruta)
     Dim SQLGuardar As String
     SQLGuardar = "insert into Tabla(Fecha) values (@fecha)"
     Dim cmd As New OleDbCommand(SQLGuardar, cnx)
     cmd.CommandType = CommandType.Text
    'Observa que solo se esta mandando el valor de fecha
     cmd.Parameters.AddWithValue("@fecha", Today.Date)
    'Para poder almacenar tambien la hora entonces utilizarias esto
    'cmd.Parameters.AddWithValue("@fecha", Now)
     MessageBox.Show("La operacion se realizo con exito", "titulo", MessageBoxButtons.OK, MessageBoxIcon.Information)
    Catch ex As Exception
     MessageBox.Show(ex.Message, "Ocurrio el siguiente error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try

    Solo seria cuestion que lo adaptaras a tus necesidades.

    Saludos!


    Luis Escobar :D

    Friday, June 29, 2012 2:41 AM
  • hola

    pero la hora la define el usuario seleccionadola o es la del sistema?

    porque de ser estandar pdorias poner directo

    Dim connstring As String = "connection string"
    Using cn As New SqlConnection(connstring)
    	cn.Open()
    	
        Dim sql As String = "INSERT INTO NombreTabla (campo1) VALUES (GETDATE())"
        Dim cmd As New SqlCommand(query, cn)
        
        cmd.ExecuteNonQuery()
    
    End Using 

    no necesitas parametro ni nada, solo el GETDATE() que es una funcion del propio sql server para devolver la fecha actual, eso lo pasas al INSERT y listo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Friday, June 29, 2012 2:46 AM
  • ¿Tu recomiendas un campo de fecha y un campo de hora?, si yo lo que quiero es la fecha y hora del computador cuando el usuario le de guardar, claro por medio de un texbox y un timer muestro la fecha y hora al usuario, pero a la hora de almacenar no es necesario que coja los valores del texbox, si hiciera mi campo hora, este seria del tipo time y ¿hay un gettime?.

    Friday, June 29, 2012 3:24 AM
  • claro por medio de un texbox y un timer muestro la fecha y hora

    porque no usas un control DateTimePicker

    pero a la hora de almacenar no es necesario que coja los valores del texbox, si hiciera mi campo hora

    yo diria que lo guardes en un solo campo y luego puede tomar cada parte

    imaginemos cargar un datatable y recuperas la row que quieres mostrar

    Dim fecha As DateTime = Convert.ToDatetime(row("campofecha"))

    txtFecha.Text = fecha.ToString("dd/MM/yyyy")

    txthora.Text = fecha.ToString("hh:mm:ss")

    como veras puede tomar cada parte para mostrarla

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Friday, June 29, 2012 12:38 PM
  • hola que tal.

    ¿cuando vas a guardar los datos, vas a hacerlo con la fecha - hora actual de la pc?  si es asi asi, en lugar de obtener esos datos de la pc y el datatimepicker, podrias solo usar el getdate() en el sql, esta funcion obtiene la fecha y hora actual del sistema(bueno del sql, pero es la misma que la pc)

    si no es de esa manera podrias usar procedimientos almacenados, te dejo el link de una pregunta que hize hae tiempo:

    http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/50fb551b-a9cf-4b53-a9e7-068f3cc86321


    Giancarlo

    Friday, June 29, 2012 10:43 PM