Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从C中的日期字符串中仅获取日期部分#_C#_Asp.net_Sql Server_Date - Fatal编程技术网

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

C# 如何从C中的日期字符串中仅获取日期部分#,c#,asp.net,sql-server,date,C#,Asp.net,Sql Server,Date,我需要以这种格式获取“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 = Txtb

我需要以这种格式获取“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));

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

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

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

var formatted = dt.ToString("yyyy-MM-dd");
试试这个:

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  ));
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
试试这个:

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

正如Christos所提到的,您可以将DateTime格式化为通用日期字符串(以下是示例)。但创建查询的正确方法是使用参数。下面是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”之间将不返回任何内容。相反,请尝试使用Christos提到的dateField>='2015-10-03'和dateField,您可以将DateTime格式化为通用日期字符串(以下是示例)。但创建查询的正确方法是使用参数。下面是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”之间将不返回任何内容。如果您的SQL日期项存储为日期和时间,而不仅仅是日期,那么您的问题是,对于介于“2015-10-03”和“2015-10-03”之间的项目,它将不返回任何内容。
因此,您只需在您的
toDate.Date
中添加一天,其
时间为上午12:00:00。
大概是这样的:

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  ));
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 );
var items=allYourSearchItems.Where(x=>x.Date>=frmdt&&x.Date
如果您的SQL日期项目存储为日期和时间,而不仅仅是日期,那么您的问题是对于“2015-10-03”和“2015-10-03”之间的项目,它将不返回任何内容。
因此,您只需在您的
toDate.Date
中添加一天,其
时间为上午12:00:00。
大概是这样的:

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  ));
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 );
var items=allYourSearchItems.Where(x=>x.Date>=frmdt&&x.Date
以上所有答案对我都不起作用。 分享工作成果:

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

以上所有答案对我都不起作用。 分享工作成果:

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

您的问题实际上是您需要“2015-10-03”和“2015-10-03”之间的所有项目。但它什么也不回,对吗?是的。如果您试图将值放入SQL,请停止。根本不要这样做——改用参数化SQL。这样,您根本不需要将值转换为字符串。。。您将避免SQL注入攻击等(不是日期,而是其他值…)您的问题实际上是您需要“2015-10-03”和“2015-10-03”之间的所有项目。但它什么也不回,对吗?是的。如果您试图将值放入SQL,请停止。根本不要这样做——改用参数化SQL。这样,您根本不需要将值转换为字符串。。。您将避免SQL注入攻击等(不是针对日期,而是针对其他值…),因此使用
String
而不是
var
var
是一种语法糖。在编译时,格式化的
类型将被声明为
字符串
。以所需格式获取日期,但我不知道y记录不会出现。@Christosso使用
string
而不是
var
var
是一种语法糖。在编译时,格式化的
类型将被声明为
字符串
。以所需格式获取日期,但我不知道y记录不会出现。@Christos