如何在 ASP.Net 中将日期和时间与日期时间方法分开



我正在编写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 部分并正确查询表

最新更新