C# 从字符串转换日期和/或时间时出错
当我尝试运行此代码时,收到以下错误:C# 从字符串转换日期和/或时间时出错,c#,sql-server-2008,type-conversion,C#,Sql Server 2008,Type Conversion,当我尝试运行此代码时,收到以下错误: conversion failed when converting date and/or time from character string 我在这一行得到了错误: g_muallak_tarihi = DateTime.Parse(row_muallakt["Muallak_tarihi"].ToString()); 要存储日期和时间或仅日期的值,我使用DateTime数据类型。我不知道该怎么办。你有什么想法吗 这是我的密码: public voi
conversion failed when converting date and/or time from character string
我在这一行得到了错误:
g_muallak_tarihi = DateTime.Parse(row_muallakt["Muallak_tarihi"].ToString());
要存储日期和时间或仅日期的值,我使用DateTime数据类型。我不知道该怎么办。你有什么想法吗
这是我的密码:
public void cs_hmuallak()
{
string cs_hmuallak = null;
SqlConnection cnn;
cs_hmuallak = @"Data Source= .\SQLEXPRESS; Initial Catalog=mydb;Integrated Security= True";
cnn = new SqlConnection(cs_hmuallak);
try
{
cnn.Open();
{
SqlDataAdapter da_muallakt = new SqlDataAdapter("SELECT M.Muallak_tutari FROM Muallak M INNER JOIN Hasar H ON M.Hasar_no= H.Hasar_no INNER JOIN Police P ON p.Police_no=h.Police_no where p.Acenta_kodu='"+cbx_acenta.Text+"' and p.Brans_kodu='"+cbx_brans.Text+"' and M.muallak_tarihi<=(Select M.muallak_tarihi from muallak M where M.muallak_tarihi=(select max(muallak_tarihi) from muallak where muallak_tarihi<=@parameter)) and M.Muallak_tarihi=(SELECT max(M.Muallak_tarihi) FROM Muallak M INNER JOIN Hasar H ON M.Hasar_no= H.Hasar_no INNER JOIN Police P ON p.Police_no=h.Police_no where p.Acenta_kodu='"+cbx_acenta.Text+"' and p.Brans_kodu='"+cbx_brans.Text+"' and M.muallak_tarihi<=(Select M.muallak_tarihi from muallak M where M.muallak_tarihi=(select max(muallak_tarihi) from muallak where muallak_tarihi<=@parameter)) ) ", cnn);
da_muallakt.SelectCommand.Parameters.AddWithValue("@parameter",g_listetarihi.ToString("yyyy-mm-dd"));
DataTable table_muallakt = new DataTable();
da_muallakt.Fill(table_muallakt);
foreach (DataRow row_muallakt in table_muallakt.Rows)
{
if (row_muallakt["Muallak_tutari"] != DBNull.Value)
{
if (row_muallakt["Muallak_tarihi"] != DBNull.Value)
{
g_muallak_tarihi = DateTime.Parse(row_muallakt["Muallak_tarihi"].ToString());
g_muallak_tutari = int.Parse(row_muallakt["Muallak_tutari"].ToString());
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
public void cs_hmuallak()
{
字符串cs_hmuallak=null;
SqlConnection-cnn;
cs_hmuallak=@“数据源=。\SQLEXPRESS;初始目录=mydb;集成安全性=True”;
cnn=新的SqlConnection(cs_hmuallak);
尝试
{
cnn.Open();
{
SqlDataAdapter da_muallakt=新SqlDataAdapter(“在M.Hasar_no=H.Hasar_no internal JOIN Police P ON P.Police_no=H.Police_no其中P.Acenta_kodu=”“+cbx_Acenta.Text+”和P.Brans_kodu=”“+cbx_Brans.Text+”,以及M.Muallak_tarihi使用string.Format
da_muallakt.SelectCommand.Parameters.AddWithValue("@parameter", string.Format("{0:yyyy-MM-dd}",g_listetarihi.ToString());
MSDN日期时间格式:假设Muallak_tarihi
被定义为DateTime
列(该列应该是它所包含的),则不需要进行所有与字符串之间的转换工作
您可以直接在数据读取器中使用GetDateTime
来获取数据,或者简单地强制转换值:
g_muallak_tarihi = row_muallakt["Muallak_tarihi"] as DateTime;
此外,您正在使用的参数(@parameter
)也应该是一个DATETIME
,并且直接传入,而不是使用ToString
:
da_muallakt.SelectCommand.Parameters.AddWithValue("@parameter",g_listetarihi);
g_muallak_tarihi
的数据类型是什么?如何定义数据库中的列?如果它们定义为日期,请使用Convert.ToDateTime()而不是尝试解析行muallakt[“muallak_tarihi”]的日期时间格式
value.@Estefany Velez-我在全局中定义为Datetime。我在SQL中定义为datedatabase@EstefanyVelez不,不,说真的,不,Oded的答案是唯一正确的方法(当然,假设列实际上定义为DateTime类型,当然应该是这样)