繁体   English   中英

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

[英]how to get only date part from date string in C#

我需要使用这种格式“ 2015-10-03”,但即时通讯这样的“ 10/3/2015”和“ 10/3/2015 12:00:00 AM”在我的查询中均不起作用。因为我的updatedate数据类型仅是日期

    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));

尝试这个:

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  ));

如Christos所述,您可以将DateTime格式化为通用Date字符串(以下示例为https://msdn.microsoft.com/zh-cn/library/zdtaw1bw(v=vs.110).aspx )。 但是创建查询的正确方法是使用参数。 下面的示例用于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
...

而且您在SQL中有一个错误,“ 2015-10-03”和“ 2015-10-03”之间将不返回任何内容。 而是尝试这个dateField> ='2015-10-03'和dateField <='2015-10-03'

您可以根据需要设置日期字符串的格式。 假设dt是您的DateTime对象,其值为10/3/2015 12:00:00 AM。 然后,您可以获取所需的字符串表示形式,如下所示:

var formatted = dt.ToString("yyyy-MM-dd");

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

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 );

上面的答案对我没有用。 分享有效的方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM