如何从C#中的日期字符串中仅获取日期部分

时间:2015-10-03 06:10:20

标签: c# asp.net sql-server date

我需要采用这种格式" 2015-10-03" ,但我得到这样的" 10/3/2015"和" 10/3/2015 12:00:00 AM"两者都不能在我的查询中工作。因为我的updateddate数据类型只是日期

    Fromdate = Txtbox_AjaxCalFrom.Text.Trim();//  10/3/2015
    DateTime frmdt = Convert.ToDateTime(Fromdate);// 10/3/2015 12:00:00 AM
    ToDate = Txtbox_AjaxCalTo.Text.Trim();
    DateTime todt = Convert.ToDateTime(Fromdate);

我想要这样的查询

updateddate between  '2015-10-03' and '2015-10-03' 

完整查询

   gvOrders.DataSource = GetData(string.Format("select * from GoalsRoadMap where Activities='{0}' and project ='" + ProjectName + "' and updateddate between  '2015-10-03' and '2015-10-03' ", customerId));

5 个答案:

答案 0 :(得分:2)

试试这个:

DateTime frmdt = Convert.ToDateTime(fromDate); 
string frmdtString = frmdt.ToString("yyyy-MM-dd");

或立刻:

string frmdt = Convert.ToDateTime(fromDate).ToString("yyyy-MM-dd");

所以你的代码看起来像这样:

Fromdate = Txtbox_AjaxCalFrom.Text.Trim();//  10/3/2015
string frmdt = Convert.ToDateTime(Fromdate).ToString("yyyy-MM-dd");
ToDate = Txtbox_AjaxCalTo.Text.Trim();
string todt = Convert.ToDateTime(todt).ToString("yyyy-MM-dd");

gvOrders.DataSource = GetData(string.Format("select * from GoalsRoadMap where Activities='{0}' and project ='" + ProjectName + "' and updateddate between  '{1}' and '{2}' ", customerId, frmdt, todt  ));

答案 1 :(得分:2)

正如Christos所提到的,您可以将DateTime格式化为通用日期字符串(这里是示例http://pandas.pydata.org/pandas-docs/stable/missing_data.html)。但是创建查询的正确方法是使用参数。以下是SqlClient的示例,但其他提供商的想法是相同的。

var cmd=new SqlCommand("UPDATE Table1 SET field1=@value WHERE dateField=@date");
cmd.Parameters.Add("@date",SqlDbType.Date).Value=myDateTime; //myDateTime is type of DateTime
...

你在SQ​​L中有错误,BETWEEN'2015-10-03'和'2015-10-03'将不会返回任何内容。相反,试试这个dateField> ='2015-10-03'AND dateField< ='2015-10-03'

答案 2 :(得分:1)

您可以根据需要设置日期字符串的格式。假设Math.sqrt((Math.pow(xf - xi,2)) - (Math.pow(yf - xi,2))); 是您的dt对象,其值为10/3/2015 12:00:00 AM。然后你可以得到你想要的字符串表示,如下所示:

DateTime

答案 3 :(得分:0)

如果您的SQL日期项目存储为日期和时间,而不仅仅是日期,则问题将出现在2015-10-03' 2015-10-03之间的项目中。和' 2015-10-03',它什么都不返回 因此,您只需要在toDate.Date Time上午12:00:00添加一天 像这样:

Fromdate = Txtbox_AjaxCalFrom.Text.Trim();//  10/3/2015
string frmdt = Convert.ToDateTime(Fromdate).Date; // 10/3/2015 12:00:00 AM
//Or
//var frmdt = DateTime.Parse(Txtbox_AjaxCalFrom.Text).Date;
ToDate = Txtbox_AjaxCalTo.Text.Trim();
string todt = Convert.ToDateTime(todt).Date.AddDays(1);// 11/3/2015 12:00:00 AM

现在如果像这样运行你的查询,它可能会起作用:

var items = allYourSearchItems.Where(x => x.Date >= frmdt && x.Date < todt );

答案 4 :(得分:0)

上述答案都不适合我。 分享成效:

string Text="22/11/2009";
DateTime date = DateTime.ParseExact(Text, "dd/MM/yyyy", null);              
Console.WriteLine("update date => "+date.ToString("yyyy-MM-dd"));