none
datetimepicker que me aguarde solo la Hora RRS feed

  • Pregunta

  • nesesito su ayuda tengo un datetimepicker que le asigne formato time y lo guardo en una columna de datatime en sql, lo que quiero hacer es que me guarde solo la hora que este seleccionada sin la fecha en la base de datos les agradecería mucho su ayuda 
    miércoles, 27 de julio de 2016 16:56

Respuestas

  • Hola Rey David30 para darle formato desde tu datagridview deberías hacerlo más o menos así:

    DataGridView1.Columns("TuColumnaHora").DefaultCellStyle.Format="t"

    Reemplazas el "TuColumnaHora" por el nombre de tu columna que contiene la hora y listo.

    Saludos y suerte


    Javier

    miércoles, 27 de julio de 2016 21:48

Todas las respuestas

  • Hola Rey David30

    Para realizar lo que necesitas podrías darle el formato que quieras:

    EN VB.NET

    Dim mi_hora As String = DateTimePicker1.Value.ToString("HH:mm:ss")

    y en C#

    string mi_hora = DateTimePicker1.Value.ToString("HH:mm:ss");

    Y guardas el valor de la variable mi_hora en tu base de datos

    Suerte y saludos

     

    Javier


    • Propuesto como respuesta Javier Córdova miércoles, 27 de julio de 2016 17:04
    • Editado Javier Córdova miércoles, 27 de julio de 2016 17:05 Variable
    miércoles, 27 de julio de 2016 17:04
  • Muchas Gracias javier si me sirvió solo que ahora me marca el siguiente error

    Desbordamiento de sqldatetime. debe de estar la fecha 01/01/1753 12.00.00 a.m y 31/12/9999 11.59.59 p.m esta me da a entender que en sql cuando se le asigna una propiedad de datetime no se puede guardar solo la hora.


    miércoles, 27 de julio de 2016 17:21
  • El error se genera xq tu definiste en tu DB el campo como DATETIME, o sea, FECHA HORA, exactamente como lo deduces. Yo te aconsejo que guardes la fecha y la hora y sólo utilices la hora cuando hagas tus consultas.

    Saludos 


    Javier

    miércoles, 27 de julio de 2016 17:34
  • Intenta asignar valor de fecha algo así "dtpick.Value.Date" o podrías hacerlo hora "dtpick.Value.Hour"
    miércoles, 27 de julio de 2016 17:37
  • SI de hecho lo tengo de esa manera al momento de consultar solo me aparece la hora que previamente guarde, el problema radica en que tengo que mostrar los registros en un datagrid pero me jala toda la fecha y hora que guardo y solo me interesaría mostrar la hora pero como no he podido hacerlo por eso se me ocurrió lo del datetimepicker guardase la hora pero veo que no se puede. 
    miércoles, 27 de julio de 2016 17:40
  • Rey David30,

    Si sólo deseas persistir el tiempo, ¿por qué defines la columna con un tipo datetime? ¿Qué versión de SQL Server ocupas? Si ocupas la versión 2008 o superior deberías usar el tipo time que sólo almacena valores de tiempo.

    Si ocupas una versión anterior a 2008, una opción -que no me gusta mucho- es definir la columna con un tipo cadena que almacene sólo valores válidos de tiempo, otra opción es almacenar un valor entero con la representación del tiempo en la unidad mínima que requieres, por ejemplo minutos. 

    El error que muestras se debe al rango permitido del tipo datetime(1/1/1753), si insistes en el uso del tipo puedes pasar el tiempo con una fecha constante, algo como

    DateTime fecha = new DateTime(1753, 1, 1, 
                        dtpFecha.Value.Hour, 
                        dtpFecha.Value.Minute, 
                        dtpFecha.Value.Second);

    La variable fecha contendrá una fecha constante (1/10/1753) y el tiempo según los valores contenidos en el objeto de tipo DateTimePicker.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 27 de julio de 2016 17:52
  • SI de hecho lo tengo de esa manera al momento de consultar solo me aparece la hora que previamente guarde, el problema radica en que tengo que mostrar los registros en un datagrid pero me jala toda la fecha y hora que guardo y solo me interesaría mostrar la hora pero como no he podido hacerlo por eso se me ocurrió lo del datetimepicker guardase la hora pero veo que no se puede. 

    Nota que defines un tipo datetime que contiene valores de fecha y tiempo, no hay forma de indicarle que sólo contenga el tiempo, para eso se usa un tipo time (en caso la versión de SQL Server te lo permita).  Aún así, una cosa es lo que se almacena y otra distinta lo que se muestra, si no puedes cambiar de tipo en base de datos entonces almacena los valores según te muestro en mi aporte anterior (fecha constante y tiempo) y al mostrar formateas el valor a sólo hora con ayuda de las propiedades de la grilla.

    miércoles, 27 de julio de 2016 17:56
  • También podrías mostrar sólo la hora desde la consulta SQL, pero como indica Williams, lo más practico sería que le des formato a tu Datagridview

    Javier

    miércoles, 27 de julio de 2016 17:59
  • Y como podría darle formato al Datagridview o bien como saco con mi sp solo la fecha o la hora dependiendo las circunstancias todo lo que me han dicho a sido mucha ayuda garcías 
    miércoles, 27 de julio de 2016 21:35
  • Hola Rey David30 para darle formato desde tu datagridview deberías hacerlo más o menos así:

    DataGridView1.Columns("TuColumnaHora").DefaultCellStyle.Format="t"

    Reemplazas el "TuColumnaHora" por el nombre de tu columna que contiene la hora y listo.

    Saludos y suerte


    Javier

    miércoles, 27 de julio de 2016 21:48
  • Rey David30,

    Desde la consulta sql:

    --Version SQL SERVER 2008 o superiores
    SELECT CONVERT(time(0), ColFecha);
    
    --Todas las versiones de SQL SERVER
    SELECT CONVERT(VARCHAR(8), ColFecha, 108);
    

    Desde la configuración de propiedades del objeto DataGridView

    dataGridView1.Columns[IndiceColumna].DefaultCellStyle.Format = "t";

    miércoles, 27 de julio de 2016 21:50
  • Gracias ya me funciono con la asignación de la columna con el format.

    miércoles, 27 de julio de 2016 21:54