我正在编写SQL查询以插入日期和时间,我想现在将日期和时间与DateTime
方法分开。我想将它们分别存储在我的数据库表中。我如何单独插入它们,请指导我。
这是我的错误查询:
string CheckRequest = "select count(*) from Requests where Date='"+DateTime.Now.ToString()+"'";
答案 0 :(得分:0)
.NET中的DateTime变量在日期和时间部分中不是“可分离的”。它们总是包含日期和时间(因此名称)。您可能需要的是仅使用查询的Date部分查询数据库。当应用于DateTime变量时,您可以使用ToString方法的特殊格式设置模式将DateTime变量转换为仅包含日期部分的字符串
string CheckRequest = @"select count(*) from Requests
where Date='" +DateTime.Now.ToString("yyyy-MM-dd")+"';
但这仍然存在一个悬而未决的问题 传递格式化字符串要求您完全按照数据库的预期格式化它。如果未能准确表示字符串,则会导致检索数据表中的记录失败。
更好的方法是让数据库引擎使用参数化查询从DateTime变量中找出Date值。
像这样的东西
string CheckRequest = @"select count(*) from Requests
where Date=@myDate"
using(SqlConnection cn = new SqlConnection(.......))
using(SqlCommand cmd = new SqlCommand(CheckRequest, cn))
{
cn.Open();
cmd.Parameters.Add("@myDate", SqlDbType.Date).Value = DateTime.Now.ToDay;
object result = cmd.ExecuteScalar();
if(result != null)
{
int count = Convert.ToInt32(result);
MessageBox.Show("Record found=" + count.ToString());
}
else
MessageBox.Show("No Record found");
}
这里我使用类型Date
的参数并分配Now.ToDay
(仍然是DateTime值,但时间等于12:00:00 AM
)数据库引擎现在知道只使用日期部分并正确查询您的表