我正在编写SQL查询以插入日期和时间,我现在想将日期和时间与DateTime
方法分开。我想将它们分别存储在数据库的表中。我如何单独插入它们,请指导我。
这是我不正确的查询:
string CheckRequest = "select count(*) from Requests where Date='"+DateTime.Now.ToString()+"'";
.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
(仍然是日期时间值,但时间等于12:00:00 AM
) 数据库引擎现在知道仅使用 Date 部分并正确查询表