如何将字符串Date从数据库转换为Integer?

时间:2014-11-15 08:29:51

标签: c# datetime

我在数据库中有一个字符串日期。我确实喜欢下面提到的格式,但它显示错误,如

  

输入字符串的格式不正确

但是,当我提到互联网时,这种方法是正确的,但它对我不起作用。让我知道原因?

string str1 = "select todate from Employee where EmpCode='" + code + "'";

SqlDataReader dr1 = conn.query(str1);

if (dr1.Read())
{
    string  todate1 = dr1[0].ToString();
    int todate2 =Convert.ToInt32(todate1);
}

1 个答案:

答案 0 :(得分:8)

听起来你应该在数据库中使用DateTime列,此时不需要整数字符串:

var today = DateTime.Today; // Or maybe use DateTime.Now
// Use parameterized SQL rather than string concatenations
string sql = "select todate from Employee where EmpCode=@EmpCode";
using (var conn = new SqlConnection(...))
{
    conn.Open();
    using (var command = new SqlCommand(sql, conn))
    {
        command.Parameters.Add("@EmpCode", SqlDbType.VarChar).Value = code;
        using (var reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                DateTime date = reader.GetDateTime(0);
                if (today > date)
                {
                    // Do something
                }
            }
        }
    }
}

如果您的日期 存储为字符串而您无法更改(如果您可以,那么肯定会这样做),您可以使用{ {1}}代替:

DateTime.ParseExact

请注意,在这两种情况下,都使用系统本地时区。您可能需要考虑以UTC格式存储所有值,并执行所有计算 - 在这种情况下,您可以使用// Other code as before while (reader.Read()) { DateTime date = DateTime.ParseExact(reader.GetString(0), "yyyy-MM-dd", // Or whatever the format is CultureInfo.InvariantCulture); if (today > date) { // Do something } }