如何从ASP.Net中的DateTime方法中分隔日期和时间

时间:2015-03-08 09:58:12

标签: sql asp.net sql-server

我正在编写SQL查询以插入日期和时间,我想现在将日期和时间与DateTime方法分开。我想将它们分别存储在我的数据库表中。我如何单独插入它们,请指导我。

这是我的错误查询:

string CheckRequest = "select count(*) from Requests where Date='"+DateTime.Now.ToString()+"'";

1 个答案:

答案 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)数据库引擎现在知道只使用日期部分并正确查询您的表