我在数据库中有一个字符串日期。我确实喜欢下面提到的格式,但它显示错误,如
输入字符串的格式不正确
但是,当我提到互联网时,这种方法是正确的,但它对我不起作用。让我知道原因?
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);
}
答案 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
}
}
。