Преобразование DateTime в строку в операторе SQL Select для форматирования правильного DateTime в таблице SQL - PullRequest
1 голос
/ 25 июня 2019

Я вставляю данные в таблицу SQL Server через контроллер в моем проекте ASP.NET MVC. Мне нужно знать, как форматировать DateTime в строку, чтобы 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();
}

Таблица в SQL Server не показывает правильный формат DateTime. currentAuditstartDate и currentAuditendDate - это те, которые не передаются правильно, чтобы SQL Server отображал правильный формат DateTime.

1 Ответ

1 голос
/ 25 июня 2019

попробуйте

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

'ггггММдд' (в одинарных кавычках), например, 20020911 - это формат ISO - очень надежный

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...