Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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# 将SQL Select语句中的DateTime转换为字符串,以在SQL表中设置正确的DateTime格式_C#_Asp.net_Sql Server_Entity Framework - Fatal编程技术网

C# 将SQL Select语句中的DateTime转换为字符串,以在SQL表中设置正确的DateTime格式

C# 将SQL Select语句中的DateTime转换为字符串,以在SQL表中设置正确的DateTime格式,c#,asp.net,sql-server,entity-framework,C#,Asp.net,Sql Server,Entity Framework,我正在通过ASP.NET MVC项目中的控制器将数据插入SQL Server表中。我需要知道如何将日期时间格式化为字符串,以便SQL Server能够正确显示它 这就是我正在使用的代码 var queryable = ((IQueryable<PoScenarioQueueManager>)filters.ApplyTo(query)).ApplyCustomFilters(); var sql = queryable.ToParameterizedQuery(); var dec

我正在通过ASP.NET MVC项目中的控制器将数据插入SQL Server表中。我需要知道如何将日期时间格式化为字符串,以便SQL Server能够正确显示它

这就是我正在使用的代码

var queryable = ((IQueryable<PoScenarioQueueManager>)filters.ApplyTo(query)).ApplyCustomFilters();

var sql = queryable.ToParameterizedQuery();
var declaration = sql.Substring(0, sql.IndexOf("SELECT", StringComparison.CurrentCultureIgnoreCase));
var select = sql.Replace(declaration, "");
var statement = "@Declaration " +
                            "INSERT INTO dbo.ScenarioQueues (ScenarioUserId, ScenarioTypeId, ScenarioId" +
                            ", VendorNumber, VendorName, DepartmentNumber, DepartmentName, AuditReleaseId, ItemId, ItemNumber" +
                            ", ItemUpc, BeginDate, EndDate, PaidCost, NewCost, ImportItemsFilePath" +
                            ", ExportItemsFilePath, ScenarioSource, CreatedBy, ModifiedBy" +
                            ", CreatedDate, ModifiedDate, PoEvent, PoEventId, CheckStartDate, CheckEndDate)" +
                            "SELECT ScenarioUserId, ScenarioTypeId, ScenarioId, VendorNumber, VendorName" +
                            ", DepartmentNumber, DepartmentName, AuditReleaseId, ItemId, ItemNumber, ItemUpc" +
                            ", BeginDate, EndDate, PaidCost, NewCost, ImportItemsFilePath, ExportItemsFilePath" +
                            ", ScenarioSource, CreatedBy, ModifiedBy, CreatedDate, ModifiedDate, PoEvent" +
                            ", PoEventId, "+currentAuditstartDate.ToString("yyyy-MM-dd") + ", "+currentAuditendDate.ToString("yyyy-MM-dd")+ 
                            " FROM ( @Select ) As QUERY";

using (SqlConnection connection = new SqlConnection(entities.Database.Connection.ConnectionString))
{
    SqlCommand command = new SqlCommand(statement.Replace("@Declaration", declaration).Replace("@Select", select), connection);
    command.Connection.Open();
    command.ExecuteNonQuery();
}
var queryable=((IQueryable)filters.ApplyTo(query)).ApplyCustomFilters();
var sql=queryable.ToParameterizedQuery();
var声明=sql.Substring(0,sql.IndexOf(“SELECT”,StringComparison.CurrentCultureIgnoreCase));
var select=sql.Replace(声明“”);
var语句=“@声明”+
插入到dbo.scenario队列(ScenarioUserId、ScenarioTypeId、ScenarioId)+
,VendorNumber,VendorName,部门编号,部门名称,AuditReleaseId,ItemId,ItemNumber+
,ItemUpc,BeginDate,EndDate,PaidCost,NewCost,ImportItemsFilePath+
,ExportItemsFilePath,ScenarioSource,CreatedBy,ModifiedBy+
,CreatedDate,ModifiedDate,PoEvent,PoEventId,CheckStartDate,CheckEndDate)+
选择ScenarioUserId、ScenarioTypeId、ScenarioId、VendorNumber、VendorName+
,部门编号,部门名称,AuditReleaseId,ItemId,ItemNumber,ItemUpc+
,BeginDate,EndDate,PaidCost,NewCost,ImportItemsFilePath,ExportItemsFilePath+
,ScenarioSource,CreatedBy,ModifiedBy,CreatedDate,ModifiedDate,PoEvent+
“,PoEventId,”+currentAuditstartDate.ToString(“yyyy-MM-dd”)+“,“+currentAuditendDate.ToString(“yyyy-MM-dd”)+
“从(@Select)作为查询”;
使用(SqlConnection=newsqlconnection(entities.Database.connection.ConnectionString))
{
SqlCommand=newsqlcommand(statement.Replace(“@Declaration”,Declaration)。Replace(“@Select”,Select),connection);
command.Connection.Open();
command.ExecuteNonQuery();
}
SQL Server中的表未显示正确的
DateTime
格式。
currentAuditstartDate
currentAuditendDate
是SQL Server显示正确日期时间格式时未正确传递的数据。请尝试此操作

var statement = "@Declaration " +
                        "INSERT INTO dbo.ScenarioQueues (ScenarioUserId, ScenarioTypeId, ScenarioId" +
                        ", VendorNumber, VendorName, DepartmentNumber, DepartmentName, AuditReleaseId, ItemId, ItemNumber" +
                        ", ItemUpc, BeginDate, EndDate, PaidCost, NewCost, ImportItemsFilePath" +
                        ", ExportItemsFilePath, ScenarioSource, CreatedBy, ModifiedBy" +
                        ", CreatedDate, ModifiedDate, PoEvent, PoEventId, CheckStartDate, CheckEndDate)" +
                        "SELECT ScenarioUserId, ScenarioTypeId, ScenarioId, VendorNumber, VendorName" +
                        ", DepartmentNumber, DepartmentName, AuditReleaseId, ItemId, ItemNumber, ItemUpc" +
                        ", BeginDate, EndDate, PaidCost, NewCost, ImportItemsFilePath, ExportItemsFilePath" +
                        ", ScenarioSource, CreatedBy, ModifiedBy, CreatedDate, ModifiedDate, PoEvent" +
                        ", PoEventId, '" + currentAuditstartDate.ToString("yyyyMMdd") + "', '" + currentAuditendDate.ToString("yyyyMMdd") +
                        "' FROM ( @Select ) As QUERY";

“yyyyMMdd”(单引号)例如“20020911”是一种ISO格式-非常可靠

您应该对语句进行参数化,而不是注入值。日期和时间数据类型没有“格式”,它们存储为二进制值。如何显示值取决于表示层,而不是SQL Server,快速回答-‘yyyyMMdd’(用单引号括起来),例如‘20020911’是ISO格式,非常可靠。因此,正如您现在编写的,SQL Server看到的是减法运算,而不是日期2019-06-25=1988举个例子。每个字符串文字都是不同的,但是,每个值的最终结果都是相同的。在这种情况下,DB Fiddle选择使用
dd/MM/yyyy hh:MM:ss
的显示格式(对我来说)。要添加到@Steve的注释中,它将被视为
日期时间
1905-06-12 00:00:00.000。为什么不正确地参数化查询?那么格式就是字符串,因为数据类型是正确的。@Cato-非常感谢。正是我需要的。