Formato de fecha en columna de datatable + problema al guardar

23/05/2008 - 17:31 por Rony De Sousa | Informe spam
Hola que tal amigos!

Mi problema es el siguiente, tengo un DataTable el cual creo de la siguiente
manera:

_SqlConnection.ConnectionString = "StringCadenaConexion";
SqlDataAdapter _SqlDataAdapter = new SqlDataAdapter();
_SqlDataAdapter.SelectCommand = new SqlCommand("Select * From tabla1");
_SqlDataAdapter.SelectCommand.CommandType = CommandType.Text;
_SqlDataAdapter.SelectCommand.Connection = _SqlConnection;

DataSet _DataSet = new DataSet();
_SqlDataAdapter.Fill(_DataSet, "tabla");
DataTable _DataTable = _DataSet.Tables["tabla"];

return _DataTable;

Esto lo tengo en una función dentro de un servicio web, ya que estoy
trabajando en una aplicación para dispositivos móviles, entonces desde la
aplicación tengo eso:

private DataTable DT = new DataTable();
DT = MiServicioWeb.Funcion();

Donde "Funcion" es el código que coloque más arriba, la función que retorna
el datatable..
Hasta aqui todo marcha bien, el problema lo tengo cuando intento guardar en
la base de datos (SQL Server 2005), ya que hay un campo de tipo Datetime en
la BD SQL el cual cuando se ejecuta el procedimiento almacenado queda de la
siguiente manera:

exec pa_MiSp @fecha = N'23/05/2008 02:30:00 a.m.' y me arroja este error:
"Error al convertir el tipo de datos nvarchar a datetime."
Esto es por el a.m.

La manera como mando a ejecutar el procedimiento y como lleno los valores en
el datatable es más o menos esta:

DT.Rows[0]["fecha"] = Convert.ToDateTime(txt_fecha.Text);

SqlDataAdapter _SqlDataAdapter = new SqlDataAdapter();
_SqlConnection.ConnectionString = "CadenaConexion";
_SqlDataAdapter.SelectCommand = new SqlCommand("pa_MiSp");
_SqlDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;

_SqlDataAdapter.SelectCommand.Parameters.AddRange(sqlParams);
_SqlDataAdapter.SelectCommand.Connection = _SqlConnection;

DataSet _DataSet = new DataSet();
_SqlDataAdapter.Fill(_DataSet, "tabla");
DataTable _DataTable = _DataSet.Tables["tabla"];


¿Hay alguna manera de darle un formato a la columna del datatable para que
solo almacene la fecha?

Ya que:
txt_fecha.Text // El text de este control tiene: 23/05/2008
// Pero cuando hago esto:
DT.Rows[0]["fecha"] = Convert.ToDateTime(txt_fecha.Text);
// Verifico con un MessageBox el valor de la columna y tiene esto:
"5/23/08 02:30:00 a.m." Con la hora y el a.m.

He buscado varias formas de hacerlo, trabajando con la clase CultureInfo
pero la verdad aún no he dado con la manera de solucionar esto..

Gracias de antemano!
 

Leer las respuestas

#1 Sashka
23/05/2008 - 18:26 | Informe spam
Puedes usar SET DATEFORMAT DMY en el SP..

http://msdn.microsoft.com/es-es/lib...89491.aspx

O ésta solución de Guille...
http://www.mundoprogramacion.com/NE...ltura.aspx

Sashka

"Rony De Sousa" escribió en el
mensaje de noticias:
Hola que tal amigos!

Mi problema es el siguiente, tengo un DataTable el cual creo de la
siguiente
manera:

_SqlConnection.ConnectionString = "StringCadenaConexion";
SqlDataAdapter _SqlDataAdapter = new SqlDataAdapter();
_SqlDataAdapter.SelectCommand = new SqlCommand("Select * From tabla1");
_SqlDataAdapter.SelectCommand.CommandType = CommandType.Text;
_SqlDataAdapter.SelectCommand.Connection = _SqlConnection;

DataSet _DataSet = new DataSet();
_SqlDataAdapter.Fill(_DataSet, "tabla");
DataTable _DataTable = _DataSet.Tables["tabla"];

return _DataTable;

Esto lo tengo en una función dentro de un servicio web, ya que estoy
trabajando en una aplicación para dispositivos móviles, entonces desde la
aplicación tengo eso:

private DataTable DT = new DataTable();
DT = MiServicioWeb.Funcion();

Donde "Funcion" es el código que coloque más arriba, la función que
retorna
el datatable..
Hasta aqui todo marcha bien, el problema lo tengo cuando intento guardar
en
la base de datos (SQL Server 2005), ya que hay un campo de tipo Datetime
en
la BD SQL el cual cuando se ejecuta el procedimiento almacenado queda de
la
siguiente manera:

exec pa_MiSp @fecha = N'23/05/2008 02:30:00 a.m.' y me arroja este error:
"Error al convertir el tipo de datos nvarchar a datetime."
Esto es por el a.m.

La manera como mando a ejecutar el procedimiento y como lleno los valores
en
el datatable es más o menos esta:

DT.Rows[0]["fecha"] = Convert.ToDateTime(txt_fecha.Text);

SqlDataAdapter _SqlDataAdapter = new SqlDataAdapter();
_SqlConnection.ConnectionString = "CadenaConexion";
_SqlDataAdapter.SelectCommand = new SqlCommand("pa_MiSp");
_SqlDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;

_SqlDataAdapter.SelectCommand.Parameters.AddRange(sqlParams);
_SqlDataAdapter.SelectCommand.Connection = _SqlConnection;

DataSet _DataSet = new DataSet();
_SqlDataAdapter.Fill(_DataSet, "tabla");
DataTable _DataTable = _DataSet.Tables["tabla"];


¿Hay alguna manera de darle un formato a la columna del datatable para que
solo almacene la fecha?

Ya que:
txt_fecha.Text // El text de este control tiene: 23/05/2008
// Pero cuando hago esto:
DT.Rows[0]["fecha"] = Convert.ToDateTime(txt_fecha.Text);
// Verifico con un MessageBox el valor de la columna y tiene esto:
"5/23/08 02:30:00 a.m." Con la hora y el a.m.

He buscado varias formas de hacerlo, trabajando con la clase CultureInfo
pero la verdad aún no he dado con la manera de solucionar esto..

Gracias de antemano!

Preguntas similares